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
交换机,对发送到交换机上的数据进行处理,三种模式
5.Route
当 Exchange 的模式为 direct 时,有效
发送到 Exchange 上的消息,会按照 route 的值,转发到指定的 queue 上
6.binding
将队列绑定到 Exchange 上
三、其他
1.队列创建
消费者 consumer 与 生产者 producer 都需要创建队列
解释:
若 生产者未创建队列,则消息发送到 Exchange 时,无法找到对应的队列,则消息发送失败
若 消费者未创建队列,则无法获取消息
2.消息消费
若队列中信息未消费,无消费者,数据会被放入cache中缓存,而不是丢弃;当有consumer消费者时,消息会被消费并从队列中删除。
队列的确认机制:消费者消费一条消息,ack 反馈消息已处理。
若未反馈(ack):程序出现BUG,或未执行 ack 操作,则不会再发送消息给此 queue ,RabbitMq Server 会认为此 消费者无能力处理。
3.服务重新启动而不会丢失信息
Durable 持久化,队列进行了持久化处理
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 持久化,队列进行了持久化处理
上一篇: websocket
下一篇: RabbitMQ与Spring集成