欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

RabbitMq

程序员文章站 2022-07-13 15:03:15
...
一、DEMO

http://www.open-open.com/lib/view/open1453350095355.html

二、概念

参考博文:
http://blog.csdn.net/anzhsoft/article/details/19563091

1.RabbitMQ Server
数据传输:将数据从生产者端传输到消费者端
流程描述:生产者将消息发送给Exchange ,Exhcnage 根据自身的配置模式,将消息发送对绑定在自身的queue队列中;消费者端,当有消息到达队列中时,会通知监听在对应队列上的监听对象。对消息进行消费,消费一条队列中减少一条。


2.生产者
传递数据及 ExchangeKey(Exchange 的编号)、RoutingKey(Queue 的编号,如果是点对点的传输时,广播方式此值无效)

3.消费者
接收数据,当队列中有消息时,会通知订阅该队列的监听对应进行消息的处理,此时,并不关心消息是由谁发送过来的,只关注消息本身

4.Exchange
交换机,对发送到交换机上的数据进行处理,三种模式

名称 英文 解释
广播 fanout 配置在此Exchange模式下的队列一次消费发送的消息
点对点 direct 根据 routeKey 指定传输到 对应的队列上
主题 topic 正则匹配,一系列队列,ab#,则匹配:abc、abd 的队列


5.Route
当 Exchange 的模式为 direct 时,有效
发送到 Exchange 上的消息,会按照 route 的值,转发到指定的 queue 上

6.binding
将队列绑定到 Exchange 上

<rabbit:direct-exchange name="exchangeTest" durable="true" auto-delete="false">
<rabbit:bindings>
<rabbit:binding queue="queueTest" key="queueTestKey"></rabbit:binding>
</rabbit:bindings>
</rabbit:direct-exchange>


三、其他

1.队列创建

消费者 consumer 与 生产者 producer 都需要创建队列

解释:
若 生产者未创建队列,则消息发送到 Exchange 时,无法找到对应的队列,则消息发送失败

若 消费者未创建队列,则无法获取消息

2.消息消费

若队列中信息未消费,无消费者,数据会被放入cache中缓存,而不是丢弃;当有consumer消费者时,消息会被消费并从队列中删除。

队列的确认机制:消费者消费一条消息,ack 反馈消息已处理。

若未反馈(ack):程序出现BUG,或未执行 ack 操作,则不会再发送消息给此 queue ,RabbitMq Server 会认为此 消费者无能力处理。

3.服务重新启动而不会丢失信息
Durable 持久化,队列进行了持久化处理





相关标签: RabbitMq

上一篇: websocket

下一篇: RabbitMQ与Spring集成