两种常用的消息中间件(activemq和rabbitmq)

1.什么是消息中间件
举一个例子:假如我们都关注了亚洲航空的微信公众号,每当它发布新的优惠活动或者开通新的航线时,我们都可以收到这个公众号的通知,这就是一种广播订阅的模式。
公众号就是通过消息中间件来完成的
航空公司把编辑好的活动推送发给微信消息中间件的服务器,然后关注了这个公众号的粉丝手机上的微信消息中间件的客户端,就会自动去把消息获取出来显示。

2.目前的消息中间件有很多种,最常用的就是Activemq和Rabbitmq这两种消息队列,下面我们分别简单的来学习一下这两种消息中间件
Activemq:是用java语言开发的消息中间件,安装比较简单,只需要下载一个rar文件解压运行activemq.bat即可,然后在浏览器中访问 http://127.0.0.1:8161/这个网站即可登陆服务器的管理界面
Activemq有两种模式,分别是队列模式和主题模式
队列模式,其实就是分食模式。比如生产方发了 10条消息到 activeMQ 服务器,而此时有多个消费方,那么这些消费方就会瓜分这些10条消息,一条消息只会被一个消费方得到。
主题模式,就是订阅模式。 比如生产方发了10条消息,而此时有多个消费方,那么多个消费方都能得到这 10条消息,就如同订阅公众号那样。
eg:队列模式中的消费方需要争抢这些消息,而主题模式则不需要争抢

Rabbitmq:
与 ActiveMQ 一样,rabbitmq 也是一种 消息中间件的实现。与之的区别在于, rabbitmq更专业,更灵活,大企业,大型高要求的应用,普遍会采用 rabbitmq 来支持,使用频率较高。
如何安装:
而它是基于 erlang 语言开发的,就如同 activemq 需要安装 java 环境一样, 为了使用 rabbitMQ 需要安装 erlang环境,然后再环境变量中配置erlang的路径,在rabbitmq文件夹中启动rabbitmq.bat,即可访问http://127.0.0.1:15672网站进行登录。
跟Acitivemq的区别在哪?
1.与activemq不一样, rabbitmq 使用的是一种叫做 AMQP 的协议来通信。 AMQP 是 dvanced Message Queuing Protocol 的缩写。协议内容我们就没必要深入研究了,简单地说,通过这种协议,可以处理更为复杂的业务需求~
2.与 ActiveMQ 拿到消息就直接放在队列等待消费者拿走不同, Rabbit 拿到消息之后,会先交给 交换机 (Exchange), 然后交换机再根据预先设定的不同绑定( Bindings )策略,来确定要发给哪个队列。
如图所示,比起 ActiveMQ 多了 Exchange 和 Bindings。
正式由于有了 Exchange 和 Bindings, RabbitMQ 就可以灵活地支撑各种模式。
两种常用的消息中间件(activemq和rabbitmq)
Rabbitm的模式:RabbitMQ提供了四种Exchange模式:fanout,direct,topic,header。 header模式在实际使用中较少,这里只讨论前三种模式.
(1)fanout模式:
fanout 模式就是广播模式,消息来了,会发给所有的队列~
两种常用的消息中间件(activemq和rabbitmq)

(2)Direct 模式:
Direct 模式就是指定队列模式, 消息来了,只发给指定的 Queue, 其他Queue 都收不到。
两种常用的消息中间件(activemq和rabbitmq)

(3)Topic 模式:
主题模式,注意这里的主题模式,和 ActivityMQ 里的不一样。 ActivityMQ 里的主题,更像是广播模式。
那么这里的主题模式是什么意思呢? 如图所示消息来源有: 美国新闻,美国天气,欧洲新闻,欧洲天气。
如果你想看 美国主题: 那么就会收到 美国新闻,美国天气。
如果你想看 新闻主题: 那么就会收到 美国新闻,欧洲新闻。
如果你想看 天气主题: 那么就会收到 美国天气,欧洲天气。
如果你想看 欧洲主题: 那么就会收到 欧洲新闻,欧洲天气。
这样就可以灵活搭配~
两种常用的消息中间件(activemq和rabbitmq)