消息中间件(JMS)学习教程

来源:互联网 发布:惠勒延迟实验知乎 编辑:程序博客网 时间:2024/06/06 08:54

持续更新中。。。。。。

消息中间件的基本处理流程如下图,生产者生产消息,发送给消息中间件,处理完之后再发送给消息消费者。这里都是异步执行,互不干扰
这里写图片描述

这里写图片描述

现在主要的消息中间件有
1. ActiveMQ/ApolloMQ
  优点:老牌的消息队列,使用Java语言编写。对JMS支持最好,采用多线程并发,资源消耗比较大。如果你的主语言是Java,可以重点考虑,简单易学,容易上手
  缺点:由于历史悠久,历史包袱较多,版本更新很缓慢。集群模式需要依赖Zookeeper实现。最新架构的产品被命名为Apollo,号称下一代ActiveMQ,目前案例较少。
  使用:
  消息中间件(JMS)学习教程:http://blog.csdn.net/u014803081/article/details/73741052
  centos下安装服务:http://blog.csdn.net/u014803081/article/details/73732375
  activemq点对点模式:http://blog.csdn.net/u014803081/article/details/73741313
  activemq发布者/订阅模式模式:http://blog.csdn.net/u014803081/article/details/73741413
  activemq+springmvc1:http://blog.csdn.net/u014803081/article/details/73742071
  activemq+springmvc2:http://blog.csdn.net/u014803081/article/details/73743300
  
2. RocketMQ/Kafka(我没用过,暂时也不去说明)
  优点:专为海量消息传递打造,主张使用拉模式,天然的集群、HA、负载均衡支持。话说还是那句话,适合不适合看你有没有那么大的量。
  缺点:所谓鱼和熊掌不可兼得,放弃了一些消息中间件的灵活性,使用的场景较窄,需关注你的业务模式是否契合,否则山寨变相使用很别扭。除此之外,RocketMQ没有.NET下的客户端可用。RocketMQ身出名门,但使用者不多,生态较小,毕竟消息量能达到这种体量的公司不多,你也可以直接去购买阿里云的消息服务。Kafka生态完善,其代码是用Scala语言写成,可靠性比RocketMQ低一些。
  
3. RabbitMQ
  优点:生态丰富,使用者众,有很多人在前面踩坑。AMQP协议的领导实现,支持多种场景。淘宝的MySQL集群内部有使用它进行通讯,OpenStack开源云平台的通信组件,最先在金融行业得到运用。
  缺点:Erlang代码你Hold得住不? 虽然Erlang是天然集群化的,但RabbitMQ在高可用方面做起来还不是特别得心应手,别相信广告。
  使用:
  消息中间件(JMS)学习教程:http://blog.csdn.net/u014803081/article/details/73741052
  centos下安装服务:http://blog.csdn.net/u014803081/article/details/73826457
  RabbitMQ的配置文件:http://blog.csdn.net/u014803081/article/details/73838737
RabbitMQ的权限设置:http://blog.csdn.net/u014803081/article/details/73847879
RabbitMQ之Maven依赖和工具类:http://blog.csdn.net/u014803081/article/details/73850657
RabbitMQ之Helloword:http://blog.csdn.net/u014803081/article/details/73850700
RabbitMQ之队列:http://blog.csdn.net/u014803081/article/details/73871643
RabbitMQ的路由机制:http://blog.csdn.net/u014803081/article/details/73867777
RabbitMQ之路由 direct方式:http://blog.csdn.net/u014803081/article/details/73896495
RabbitMQ之路由 fanout方式:http://blog.csdn.net/u014803081/article/details/73896608
RabbitMQ之路由 topic方式:http://blog.csdn.net/u014803081/article/details/73898860
RabbitMQ之路由 headers方式:http://blog.csdn.net/u014803081/article/details/73899816
RabbitMQ之RPC:http://blog.csdn.net/u014803081/article/details/74001372
RabbitMQ之队列方法和参数详解:http://blog.csdn.net/u014803081/article/details/73912561
RabbitMQ之arguments参数:http://blog.csdn.net/u014803081/article/details/74002198
RabbitMQ之延迟消息:http://blog.csdn.net/u014803081/article/details/73917816
RabbitMQ之RPC:http://blog.csdn.net/u014803081/article/details/74001372
RabbitMQ之arguments参数:http://blog.csdn.net/u014803081/article/details/74002198
springmvc-rabbitmq:http://blog.csdn.net/u014803081/article/details/75629667

参考资料:
http://www.cnblogs.com/bluestorm/p/6633492.html
https://zhidao.baidu.com/question/691383489265629564.html
http://www.cnblogs.com/frankyou/p/5283539.html