java操作rabbitmq实现简单的消息发送(socket编程的升级)

  • 阿里云国际版折扣https://www.yundadi.com

  • 阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

    准备:

      1.下载rabbitmq并搭建环境(和python那篇一样:http://www.cnblogs.com/g177w/p/8176797.html)

      2.下载支持的jar包(http://repo1.maven.org/maven2/com/rabbitmq/amqp-client)

    生产者方(Productor.java):

     package RabbitMQTest;
    
     import java.util.HashMap;
    import java.util.Map; import com.rabbitmq.client.AMQP.Queue;
    import com.rabbitmq.client.Channel;
    import com.rabbitmq.client.Connection;
    import com.rabbitmq.client.ConnectionFactory; public class Productor {
    public static String QUEUE_NAME = "STEVEN";
    public static void main(String[] args) {
    //初始化socket链接
    ConnectionFactory factory = new ConnectionFactory();
    //指定链接地址
    factory.setHost("localhost");
    try{
    //建立程序和rabbitmq的socket连接
    Connection connection = factory.newConnection();
    //创建管道
    Channel channel = connection.createChannel();
    //声明队列
    channel.queueDeclare(QUEUE_NAME,false,false,false,null);
    //让当前线程睡眠8s,以检验rabbitmq的消息轮询
    Thread.currentThread().sleep(8000);
    String message = "hello,world";
    //发送消息
    channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
    System.out.println("[x] send the message"+message);
    channel.close();
    connection.close();
    }catch (Exception e) {
    System.out.println("程序出错:"+e);
    } }
    }

    消费者方(Consummer.java):

     package RabbitMQTest;
    import com.rabbitmq.client.Connection;
    import com.rabbitmq.client.Channel;
    import com.rabbitmq.client.ConnectionFactory;
    import com.rabbitmq.client.QueueingConsumer;
    import com.rabbitmq.client.QueueingConsumer.Delivery;
    /**
    * 本程序为了练习rabbitmq的简单操作
    *
    * @author STEVEN
    *
    */
    public class Consumer {
    public static void main(String[] args) {
    try {
    //创建连接工厂对象
    ConnectionFactory factory = new ConnectionFactory();
    //设置工厂对象的参数,用来连接rabbitmq
    factory.setHost("localhost");
    //建立程序与rabbitmq的socket连接
    Connection connection = factory.newConnection();
    //创建管道
    Channel channel = connection.createChannel();
    //声明队列
    channel.queueDeclare(Productor.QUEUE_NAME, false, false, false, null);
    System.out.println(" [*] Waiting for messages. To exit press CTRL+C");
    //创建队列消费对象
    QueueingConsumer consumer = new QueueingConsumer(channel);
    //设置参数
    channel.basicConsume(Productor.QUEUE_NAME, true, consumer);
    //创建接收对象来接收来自服务端的消息
    Delivery delivery = null;
    //循环接收,相当于开启了一个监听
    while (true) {
    delivery = consumer.nextDelivery();
    String message = new String(delivery.getBody());
    System.out.println(" [x] Received '" + message + "'");
    }
    } catch (Exception e) {
    System.out.println(e);
    }
    }
    }
  • 阿里云国际版折扣https://www.yundadi.com

  • 阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
    标签: JavaRabbitMQ

    “java操作rabbitmq实现简单的消息发送(socket编程的升级)” 的相关文章

    SpringMVC ViewResolver视图解析器组件怎么用 - 开发技术

    本篇内容主要讲解“SpringMVC ViewResolver视图解析器组件怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringMVC ViewResolver视图解析器组件怎么用”吧!Sp...

    静态成员的声明与实现

    #include"iostream" using namespace std; class A{ private: static double d;//声明 static long l; public: static void show(){ cout &l...

    Linux中rz和sz命令用法详解

    在linux中rz 和 sz 命令允许开发板与主机通过串口进行传递文件了下面我们就来简单的介绍一下rz 和 sz 命令的例子。 rzsz是Linux/Unix同Windows进行ZModem文件传输的命令行工具。 优点就是不用再开一个sftp工具登录上去上传下载文件。 sz将选定的文件发送se...

    Codeforces Round #105 (Div. 2) / 148A Insomnia cure (枚举 || 数论)_枚举输入

    A. Insomnia cure http://codeforces.com/problemset/problem/148/A time limit per test memory limit per test input...

    Python虚拟机字节码之控制流怎么实现 - 开发技术

    本篇内容介绍了“Python虚拟机字节码之控制流怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!控制流实现控制流这部分代码主要涉及下面几条字节码指令,下面的所有字...

    java-利用单元测试junit测试接口的多线程并发性能

    1.开发中遇到的实际问题 开发一个业务接口功能的过程中由于没有充分考虑到前端的并发调用导致接口数据有误。对于这样一个问题首先要定位问题出现的原因根据网关调用的日志链路排查。接口主要是在reids中存入对应数据也redis写数据进行了幂等。但是没充分考虑到线上的连续调用测试也没有对接口进行并发测试。...