• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

rabbitmq消费者和生产者

武飞扬头像
为了offer努力
帮助1

在第一次学习rabbitmq的时候,遇到了许多不懂得

学新通

第一步导包

  1.  
    <dependency>
  2.  
    <groupId>com.rabbitmq</groupId>
  3.  
    <artifactId>amqp-client</artifactId>
  4.  
    <version>5.14.2</version>
  5.  
    </dependency>
  6.  
    <dependency>
  7.  
    <groupId>commons-io</groupId>
  8.  
    <artifactId>commons-io</artifactId>
  9.  
    <version>2.6</version>
  10.  
    </dependency>

第二步新增生产者

  1.  
    public class Producer {
  2.  
    //队列名称
  3.  
    public static final String QUEUE_NAME="hello";
  4.  
    //发消息
  5.  
    public static void main(String[] args) throws Exception {
  6.  
    //创建一个连接工厂
  7.  
    ConnectionFactory connectionFactory = new ConnectionFactory();
  8.  
    //工厂的ip连接RabbitMQ队列
  9.  
    connectionFactory.setHost("110.12.247.134");
  10.  
    //端口号
  11.  
    connectionFactory.setPort(5672);
  12.  
    connectionFactory.setVirtualHost("my_vhost"); //填写自己
  13.  
    //用户名 填写自己的
  14.  
    connectionFactory.setUsername("admin");
  15.  
    //密码 填写自己的
  16.  
    connectionFactory.setPassword("admin");
  17.  
    Connection connection = connectionFactory.newConnection();
  18.  
    System.out.println(connection);
  19.  
    //获取信道
  20.  
    Channel channel = connection.createChannel();
  21.  
    /*生成一个队列
  22.  
    * 1.队列的名称
  23.  
    * 2.队列里面的消息是否持久化(磁盘) 默认情况下消息存储在内存当中
  24.  
    * 3.该队列是否只供一个消费者进行消费,是否进行消费共享,false只能供一个消费者,true提供给所有消费者
  25.  
    * 4.是否自动删除 最后一个消费者断开连接以后 该队列是否自动删除 true自动删除 false 不自动删除
  26.  
    * 5.其他参数
  27.  
    * */
  28.  
    channel.queueDeclare(QUEUE_NAME,false,false,false,null);
  29.  
    //发消息
  30.  
    String message="Hello World";
  31.  
    /**发送一个消费
  32.  
    * 1.发送到那个交换机
  33.  
    * 2.路由的key值是哪个 本次是队列的名称
  34.  
    * 3.其他参数信息
  35.  
    * 4.发送消息的消息体
  36.  
    * */
  37.  
    channel.basicPublish("",QUEUE_NAME,null,message.getBytes());
  38.  
    System.out.println("消息发送完毕");
  39.  
    }
  40.  
    }
学新通

在这里中:

connectionFactory.setVirtualHost("my_vhost");//填写自己的队列名称,如果你的为”/“则填写''/''

学新通

第三步新增消费者

  1.  
    public class Consumer {
  2.  
    //队列名称
  3.  
    public static final String QUEUE_NAME="hello";
  4.  
     
  5.  
    public static void main(String[] args) throws Exception {
  6.  
    //创建一个连接工厂
  7.  
    ConnectionFactory connectionFactory = new ConnectionFactory();
  8.  
    //工厂的ip连接RabbitMQ队列
  9.  
    connectionFactory.setHost("110.42.247.134");
  10.  
    //端口号
  11.  
    connectionFactory.setPort(5672);
  12.  
    connectionFactory.setVirtualHost("my_vhost");
  13.  
    //用户名
  14.  
    connectionFactory.setUsername("admin");
  15.  
    //密码
  16.  
    connectionFactory.setPassword("admin");
  17.  
    Connection connection = connectionFactory.newConnection();
  18.  
    //获取信道
  19.  
    Channel channel = connection.createChannel();
  20.  
    //声明 接受消息
  21.  
    DeliverCallback deliverCallback=(consumerTag,messagee) -> {
  22.  
    System.out.println(new String(messagee.getBody()));
  23.  
    };
  24.  
    //取消消息时的回调
  25.  
    CancelCallback cancelCallback=(message)->{
  26.  
    System.out.println("消费消息被中断");
  27.  
    };
  28.  
    //消费者接受消息
  29.  
    /*消费者消费消息
  30.  
    *1.消费那个队列
  31.  
    * 2.消费成功后是否要自动应答 true 代表的是自动应答 false代表的是手动应答
  32.  
    * 3.消费者未成功消费的回调
  33.  
    * 4.消费者取消消费的回调
  34.  
    * */
  35.  
    channel.basicConsume(QUEUE_NAME,true, deliverCallback, cancelCallback);
  36.  
    }
  37.  
    }
学新通

消息获取成功

学新通

注意如果你用的云服务器需要打开这两个端口 5672 15672

学新通

如果你使用的虚拟机则你需要关闭防火墙

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgffjab
系列文章
更多 icon
同类精品
更多 icon
继续加载