消息队列中间件
1.消息队列中间件介绍
消息队列中间件是大型系统中的重要组件,已经逐渐成为企业系统内部通信的核心手段。它具有松耦合、异步消息、流量削峰、可靠投递、广播、流量控制、最终一致性等一系列功能,已经成为异步RPC的主要手段之一。
目前常见的消息中间件有ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ等。
2.消息队列应用场景
消息队列在实际中常见的应用场景有应用解耦、异步处理、流量错峰与流控、日志处理等等。
3.JMS消息模式
大部分消息队列都有两种通信模式:
- 点对点通信(Point-to-Point Messaging Domain)
- 发布-订阅(Publish/Subscribe Messaging Domain)
点对点通信
消息到达消息系统,被保留在消息队列中,然后由一个或者多个消费者消费队列中的消息,一个消息只能被一个消费者消费,然后就会被移除。例如订单处理系统。
发布-订阅
消息发送时指定主题(或者说通道),消息被保留在指定的主题中,消费者可以订阅多个主题,并使用主题中的所有的消息,例如现实中的电视与电视频道。所有客户端包括发布者和订阅者,主题中的消息可以被所有的订阅者消费,消费者只能消费订阅之后发送到主题中的消息。
4.ActiveMQ
- ActiveMQ介绍
1.Active MQ 是由 Apache 出品的一款流行的功能强大的开源消息中间件,它速度快,支持跨语言的客户端,具有易于使用的企业集成模式和许多的高级功能,同时完全支持 JSM1.1 和 J2EE1.4 。
2.官方下载地址: http://activemq.apache.org/download.html
3.官方安装教程: http://activemq.apache.org/getting-started.html
4.默认管理页面:http://127.0.0.1:8161/admin/
5.默认用户名和密码为admin / admin。您可以在conf / jetty-real.properties文件中进行配置。
6.默认服务端口:61616
- ActiveMQ特点
1.支持Java,C,C ++,C#,Ruby,Perl,Python,PHP等各种跨语言客户端和协议,如 OpenWire , Stomp , AMQP , MQTT.
2.完全支持JMS 1.1和 J2EE 1.4,支持瞬态,持久,事务和XA消息传递。
3.对 Spring 框架的支持以便ActiveMQ可以轻松嵌入到Spring应用程序中。
4.通过了常见的 J2EE 服务器测试,如 TomEE,Geronimo,JBoss,GlassFish 和 WebLogic 。
5.连接方式的多样化,ActiveMQ 提供了多种连接模式,例如 in-VM、TCP、SSL、NIO、UDP、多播、JGroups、JXTA。
6.可以通过使用 JDBC 和 journal 实现消息的快速持久化。
7.专为高性能群集,客户端 - 服务器,点对点通信而设计。
8.提供与语言无关的 REST API。
9.支持 Ajax 方式调用 ActiveMQ。
10.ActiveMQ 可以轻松地与 CXF、Axis 等 Web Service 技术整合,以提供可靠的消息传递。
11.可用作为内存中的 JMS 提供者,非常适合 JMS 单元测试。
- ActiveMQ消息
点对点队列模式
消息到达消息系统,被保留在消息队列中,然后由一个或者多个消费者消费队列中的消息,一个消息只能被一个消费者消费,然后就会被移除。例如订单处理系统。
发布-订阅模式
消息发送时指定主题(或者说通道),消息被保留在指定的主题中,消费