简介
Apache ActiveMQ是一个比较广泛使用的开源消息中间件。他的性能较快,并且支持许多语言的客户端及多种协议。它在企业集成模式中非常易于使用,并且完全支持JMS 1.1 和J2EE 1.4的很多高级特性。Apache ActiveMQ在Apache 2.0 Liense下开源。
主要特性
- 支持Java, C, C++, C#, Ruby, Perl, Python, PHP等客户端
- OpenWire模式下的Java, C, C++, C#客户端的性能非常高。
- Stomp支持是为了C, Ruby, Perl, Python, PHP, ActionScript/Flash,Smalltalk 语言能够方便的和ActiveMQ Broker 通信,就像其他消息Broker一样。
- 支持AMQP v1.0 。
- AMQP v1.0 支持允许在IOT环境中的设备的链接
- JMS客户端和消息Broker完全支持企业集成模式。
- 支持诸如 Message Groups, Virtual Destinations, Wildcards and Composite Destinations
- Message Group是针对queue。如果在queue模式下,一个生产者对应多个消费者,每生产一条消息,会被消费随即抢到,如果我们不希望这样,只希望固定的消息被固定的消费者消费,那么就采用group对消息进行一个类似标记的作用。另外一方面,Message Groups特性也是一种负载均衡的机制。在一个消息被分发到consumer之前,broker首先检查消息JMSXGroupID属性。如果存在,那么broker会检查是否有某个consumer拥有这个message group。如果没有,那么broker会选择一个consumer,并将它关联到这个message group。此后,这个consumer会接收这个message group的所有消息,直到: 1:Consumer被关闭 2:Message group被关闭,通过发送一个消息,并设置这个消息的JMSXGroupSeq为-1
- Virtual Destinations 集群应用想要消费同一个队列时可以使用该模式。使用起来非常简单,对于消息发布者来说,就是一个正常的Topic,名称以VirtualTopic.开头。例如VirtualTopic.TEST。对于消息接收端来说,是个队列,不同应用(或者说不同集群 不同组)里使用不同的前缀作为队列的名称,即可表明自己的身份也可实现消费端应用分组。例如Consumer.A.VirtualTopic.TEST来说明他是A组的消费者。可以在同一个组内使用多个consumer来消费此组消息。每组相当于一个持久化订阅者,组内可以有多个消费者共同消费消息。
- Wildcards and Composite Destination,通过通配符监听一批消息队列及同时发送多个通知。
- 完全支持JMS 1.1和J2EE 1.4,支持transient, persistent, transactional and XA messaging
- Spring支持,使ActiveMQ可以轻松地嵌入到Spring应用程序中,并使用Spring的XML配置机制进行配置
- 在流行的J2EE服务器(如TomEE、Geronimo、JBoss、GlassFish和WebLogic)中进行了测试
- 包含用于入站和出站消息传递的JCA 1.5资源适配器,以便ActiveMQ能够在任何符合J2EE 1.4的服务器中自动部署
- 支持可插入传输协议,如in-VM、TCP、SSL、NIO、UDP、多播、JGroups和JXTA传输
- 支持使用JDBC和高性能日志进行非常快速的持久性
- 适用于高性能集群、客户端-服务器、对等通信
- REST API为消息传递提供与技术无关和语言无关的基于web的API
- Ajax支持使用纯DHTML向web浏览器提供web流支持,允许web浏览器成为消息传递结构的一部分
- CXF和Axis支持,以便ActiveMQ可以轻松地放到这两个web服务栈中,以提供可靠的消息传递
- 可以作为内存中的JMS提供程序使用,非常适合对JMS进行单元测试
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">
原文地址:https://www.cnblogs.com/alcc/p/10023406.html
时间: 2024-11-14 12:41:27