Rabbitmq的3种模式业务流程

本文详细介绍了如何在项目中使用RabbitMQ进行消息队列的搭建,包括添加jar包、创建ConnectionFactory、Connection、Channel等核心组件,并深入探讨了发布订阅模式、路由模式和主题模式的具体实现过程。

添加jar包

<!-- 消息队列 -->

      <dependency>

         <groupId>com.rabbitmq</groupId>

         <artifactId>amqp-client</artifactId>

         <version>3.5.1</version>

      </dependency>

      <dependency>

             <groupId>org.springframework.amqp</groupId>

             <artifactId>spring-rabbit</artifactId>

             <version>1.4.0.RELEASE</version>

      </dependency>

 

 

1.ConnectionFactory factory.   用于注入消息队列的ip,客户端端口,账户,密码,虚拟主机名

2.Connection connection                                                                                                   //连接

3.Channel channel                                                                                                             //定义队列 

4.QueueingConsumer consumer                                                                                      //消费者

5.QueueingConsumer.Delivery delivery

6.String msg

 

 

queueDeclare(队列名称,是否持久化,是否生产者独有,队列无消息是否删除,传递额外参数)       //定义队列

exchangeDeclare(交换机名称,”3种模式之一”);                                                                                        //定义交换机;

queueBind(队列名称,交换机名称,路由key);                                                                                                //将队列和交换机绑定

basicPublish(交换机名称,路由key,参数设定props一般为null,传输字节码文件msg.getBytes())         //发送消息

basicConsume(队列名称,是否自动回复,消费者名称)                                                                      //将队列和消费者绑定

basicQos(1)                                                                                                                                             //每个消费者获取消息个数

basicAck(delivery.getEnvelope().getDelivertTag(),multiple是否批量回复)                                             //回复确认消

 

 

一、发布订阅模式fanout:

2=1.newConnection();

3=2.creataChannel();

3.exchangeDeclare(

3.basicPublish(                                         //循环发送消息

//下面定义第一个消费者

3.queueDeclare(

3.queueBind(                                           

3.basicQos(1个);

4=3                                                          //新建对象参数传入

3.basicConsume(

5=4.nextDelivery();                                 //这里开始循环获取消息

6=5                                                          //新建对象参数5.getBody()传入

得到6

3.basicAck(

//第二个消费者是一样的操作

 

 

二、路由模式direct:

2=1.newConnection();

3=2.creataChannel();

3.exchangeDeclare(

//下面3行发送消息,定义队列,队列和交换机绑定

3.queueDeclare(

3.basicPublish(                                         //循环发送消息

3.queueBind(

//下面定义第一个消费者

3.basicQos(1个);

4=3                                                          //新建对象参数传入

3.basicConsume(

5=4.nextDelivery();                                  //这里开始循环获取消息

6=5                                                          //新建对象参数5.getBody()传入

得到6

3.basicAck(

//下面是第二个消费者绑定第二条队列,第二条队列与交换机绑定

 

三、主题模式topic:

流程和路由模式是一样的,区别在路由key,根据一类路由key来发送消息或者是队列与交换机绑定

basicPublish和queuebind   这两个方法里的路由key

路由key的通配符

*号:能够匹配单个字符或者词组(只能匹配一个.)

#号:能够匹配多个字符,能够匹配多个”.”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值