博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RabbitMQ的几种工作模式
阅读量:6849 次
发布时间:2019-06-26

本文共 1368 字,大约阅读时间需要 4 分钟。

maven:

com.rabbitmq
amqp-client
3.4.1
org.slf4j
slf4j-log4j12
1.7.7
org.apache.commons
commons-lang3
3.3.2
org.springframework.amqp
spring-rabbit
1.4.0.RELEASE
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

1、Work模式 

这里写图片描述

一个生产者,多个消费者,每个消费者获取到的消息唯一。

1、  自动模式    消费者从消息队列获取消息后,服务端就认为该消息已经成功消费。2、  手动模式    消费者从消息队列获取消息后,服务端并没有标记为成功消费    消费者成功消费后需要将状态返回到服务端
  • 1
  • 2
  • 3
  • 4
  • 5

2、订阅模式 

这里写图片描述

一个生产者发送的消息会被多个消费者获取。 

生产者:可以将消息发送到队列或者是交换机。 
消费者:只能从队列中获取消息。 
如果消息发送到没有队列绑定的交换机上,那么消息将丢失。

3、路由模式 

这里写图片描述

1、 发送消息到交换机并且要指定路由key 

2、 消费者将队列绑定到交换机时需要指定路由key

4、通配符模式 

这里写图片描述

将路由键和某模式进行匹配,此时队列需要绑定在一个模式上,“#”匹配一个词或多个词,“*”只匹配一个词。

5、RPC模式 

这里写图片描述

(RPC) Remote Procedure Call Protocol 远程过程调用协议

在一个大型的公司,系统由大大小小的服务构成,不同的团队维护不同的代码,部署在不同的机器。但是在做开发时候往往要用到其它团队的方法,因为已经有了实现。但是这些服务部署不同的机器上,想要调用就需要网络通信,这些代码繁琐且复杂,一不小心就会写的很低效。RPC协议定义了规划,其它的公司都给出了不同的实现。比如微软的wcf,以及现在火热的WebApi。

在RabbitMQ中RPC的实现也是很简单高效的,现在我们的客户端、服务端都是消息发布者与消息接收者。

首先客户端通过RPC向服务端发出请求

我这里有一堆东西需要你给我处理一下,correlation_id:这是我的请求标识,erply_to:你处理完过后把结果返回到这个队列中。

服务端拿到了请求,开始处理并返回

correlation_id:这是你的请求标识 ,原封不动的给你。 这时候客户端用自己的correlation_id与服务端返回的id进行对比。是我的,就接收。

你可能感兴趣的文章