第2篇 rabbitmq helloworld入门(java版)

本文介绍Java版RabbitMQ Hello客户端的入门知识。先说明了先决条件,需安装并运行RabbitMQ。接着介绍RabbitMQ概念,如生产者、队列、消费者。然后通过Hello World示例,讲解了RabbitMQ的jar依赖、生产者和消费者代码的创建。最后总结学习内容并给出参考代码。

这一部分注意学习一下java版 rabbitmq hello客户端。

1、先决条件

  • 假设您已经安装并且运行rabbitmq在localhost,端口为5672,如果您使用host,端口或证书不是默认的就需要在配置做相应调整
  • 可以先看一下和做好准备工作 rabbitmq的安装和启动(brew),后面有用到创建queue和vhost

2、简介

  • rabbitMq类似邮局,只是与邮局不同的是它不处理数据,只是接收,存储,转发二进制数据。
  • producer(生产者)无非就是发送,发送消息的程序是生产者,用P表示
  • queue(队列) 就是rabbitmq中的邮箱,用于存储消息,同时消费者也可以从其中队列中拿去消息。
  • consumer(消费者) 就等待从队列中拿消息进行处理,用C表示
  • 请注意,生产者,消费者和代理不必驻留在同一主机上;实际上,在大多数应用程序中它们也没有。应用程序也可以既是生产者又是消费者

3、Hello World

  • 先简单考虑一下,消息为A它流向,(假设是同步),如下所示
  • image-20210603161911233

3.1、rabbitmq的jar依赖

  • Rabbitmq是支持多种协议,一般用到就是AMQP 0-9-1为主,示例也使用协议。

  • 同时采用maven方式来管理依赖

    •  <dependency>
            <groupId>com.rabbitmq</groupId>
            <artifactId>amqp-client</artifactId>
            <version>5.7.1</version>
          </dependency>
      
  • IDE工具采用Idea (快速创建一个)

  • image-20210603162959107

3.2、创建生产者(send.java)

  • image-20210603163929395

  • 代码如下

    • public class Send {
      
          private final static String QUEUE_NAME = "test_queue";
          private final static String V_HOST = "test_host";
      
      
          public static void main(String[] args) throws Exception {
              ConnectionFactory factory = new ConnectionFactory();
              factory.setHost("localhost");
              factory.setVirtualHost(V_HOST);
              Connection connection = factory.newConnection();
              Channel channel = connection.createChannel();
              //因为在第一步已经设置好队列了
      //        channel.queueDeclare(QUEUE_NAME, false, false, false, null);
              String message = "Hello World";
              // 向队列test_queue发送消息
              channel.basicPublish("", QUEUE_NAME, null, message.getBytes(StandardCharsets.UTF_8));
              System.out.println("[x] Sent '" + message + "'");
              //打印消息队列中的消息数量
              System.out.println(channel.messageCount(QUEUE_NAME));
      
          }
      }
      
      
  • 可以根据上面代码可以分析出,利用工厂模式,先配置一些基础信息,比如vhost和host(连接是本地端口号),端口之类,类的关系,消息发送,可以查看如下示意图

  • image-20210603173556866

  • 执行上述代码你可以查看一下rabbitMq控制台

    • image-20210603173825531
  • 注意事项(一般应不会)

    • rabbitmq如果运行磁盘只有200M可用时候,拒绝接受消息

3.3、创建消费者(Recv.java)

  • image-20210603175449000

  • /**
     * @author liangchen
     * @date 2021/6/3
     */
    public class Recv {
        private final static String QUEUE_NAME = "test_queue";
        private final static String V_HOST = "test_host";
    
    
        public static void main(String[] args) throws Exception {
            ConnectionFactory factory = new ConnectionFactory();
            factory.setHost("localhost");
            factory.setVirtualHost(V_HOST);
            Connection connection = factory.newConnection();
            Channel channel = connection.createChannel();
            System.out.println(" [*] Waiting for messages. To exit press CTRL+C");
            // 需要使用jdk1.8,因为使用lambada表达式
            DeliverCallback deliverCallback = (consumerTag, delivery) -> {
                String message = new String (delivery.getBody(), "UTF-8");
                System.out.println(" [x] Received '" + message + "'");
            };
            channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag -> {});
    
        }
    }
    
    
  • 执行结果如下

    •  [*] Waiting for messages. To exit press CTRL+C
       [x] Received 'Hello World'
       [x] Received 'Hello World'
       [x] Received 'Hello World'
      
      
    • image-20210603180338913

  • 代码你会发现基本跟生产者一样,一个生成消息发送, 一个接受消息进行处理,这里处理使用回调方式,利用lambada表达式

4、总结

  • 学习java版创建生产者和消费者

  • 详情代码可以参考github上示例 rabbitmq helloworld

  • 希望对您有帮助,喜欢star

  • 下一篇将会研究一下客户发送这部分的源码

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值