介绍

rabbitmq 是一种 消息中间件的实现。由erlang语言开发,基于AMQP(Advanced MessageQueue 高级消息队列协议)协议实现的消息队列,它是一种应用程序之间的通信方法。

AMQP

以下内容来自百度百科

AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端中间件不同产品,不同的开发语言等条件的限制。Erlang中的实现有RabbitMQ等。

消息路由过程

Rabbit 拿到消息之后,会先交给 交换机 (Exchange), 然后交换机再根据预先设定的不同绑定( Bindings )策略,来确定要发给哪个队列。
如图所示,比起 ActiveMQ 多了 Exchange 和 Bindings。
正式由于有了 Exchange 和 Bindings, RabbitMQ 就可以灵活地支撑各种模式。

rabbitmq的工作原理

模式

RabbitMQ提供了四种Exchange模式:fanout, direct, topic , header 。 header模式在实际使用中较少,这里只讨论前三种模式.

fanout 模式

fanout 模式就是广播模式。消息来了,会发给所有的队列。

Direct 模式

Direct 模式就是指定队列模式, 消息来了,只发给指定的 Queue, 其他Queue 都收不到。

Topic 模式

主题模式,注意这里的主题模式,和 ActivityMQ 里的不一样。 ActivityMQ 里的主题,更像是广播模式。
那么这里的主题模式是什么意思呢? 如图所示消息来源有: 美国新闻,美国天气,欧洲新闻,欧洲天气。
如果你想看 美国主题: 那么就会收到 美国新闻,美国天气。
如果你想看 新闻主题: 那么就会收到 美国新闻,欧洲新闻
如果你想看 天气主题: 那么就会收到 美国天气,欧洲天气
如果你想看 欧洲主题: 那么就会收到 欧洲新闻,欧洲天气。

这样就可以灵活搭配

how2j

https://www.cnblogs.com/cxyxiaobao/p/12007648.html