"活跃的消息总线:Apache ActiveMQ详解"

需积分: 0 1 下载量 195 浏览量 更新于2023-12-20 收藏 997KB DOC 举报
ActiveMQ 是Apache出品,目前应用最广泛的开源消息总线,具有强大的能力。它完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现。虽然JMS规范出台已经很久,但在当今的J2EE应用中仍扮演着特殊的地位。ActiveMQ通过实现了Java Message Service(JMS)规范,为多系统和多应用程序之间的远程消息通信提供了中介(或称代理)。它是使用Java实现的,并为C/C、.NET、Perl、PHP、Python、Ruby等其他编程语言提供了客户端的API使用接口。 企业级的消息软件从1980年后开始出现,消息不仅是应用程序间通信的一种方式,也可以当成是应用的集成方式。然而,在最近的十年间,开放源码的消息解决方案才刚刚出现。Apache的ActiveMQ就是这样的一种软件,以一种异步的、松耦合的方式为应用程序提供通信支持。ActiveMQ是一种开源的,实现了JMS1.1规范的,面向消息(MOM)的中间件,为应用程序提供高效的、可扩展的、稳定的和安全的企业级消息通信。ActiveMQ使用Apache提供的授权,任何人都可以对其实现代码进行修改。 总的说来,ActiveMQ具有以下特点: 1. 支持JMS规范:ActiveMQ完全支持JMS1.1规范,可以作为JMS Provider实现,为Java应用程序提供消息服务。 2. 多语言支持:ActiveMQ不仅支持Java语言,还为C/C、.NET、Perl、PHP、Python、Ruby等其他编程语言提供了客户端的API使用接口,使得各种应用程序能够轻松地进行消息通信。 3. 开放源码:ActiveMQ是开源的,使用Apache提供的授权,任何人都可以对其实现代码进行修改,使得用户能够根据自己的需求进行定制和扩展。 4. 企业级消息通信:ActiveMQ为企业级应用程序提供了高效、可扩展、稳定和安全的消息通信服务,能够满足大规模应用的需求。 5. 异步、松耦合通信方式:ActiveMQ以异步的、松耦合的方式为应用程序提供通信支持,能够帮助应用程序实现高效的消息通信和集成。 总的来说,ActiveMQ是一款强大的开源消息总线,能够为各种类型的应用程序提供高效、可靠的消息通信服务。它的开源特性和多语言支持使得它成为企业级应用中首选的消息通信解决方案之一。通过使用ActiveMQ,用户能够轻松地实现跨系统、跨应用程序的消息通信,帮助他们构建稳健、可扩展的应用程序。ActiveMQ的出现,极大地促进了消息通信的发展和应用,为企业级应用程序的开发和集成提供了便利和支持。

详细说一下一下代码:package com.mcloud.market.mq; import com.mcloud.common.constant.Constants; import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.command.ActiveMQQueue; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jms.config.JmsListenerContainerFactory; import org.springframework.jms.config.SimpleJmsListenerContainerFactory; import org.springframework.jms.core.JmsMessagingTemplate; import javax.jms.ConnectionFactory; import javax.jms.Queue; @Configuration public class ActiveMQConfig { @Value("${spring.activemq.broker-url}") private String brokerUrl; @Value("${spring.activemq.user}") private String username; @Value("${spring.activemq.password}") private String password; @Bean public Queue queue() { return new ActiveMQQueue(Constants.PREFIX + ".amount"); } @Bean(name = "messageQueue") public Queue amountQueue() { return new ActiveMQQueue(Constants.PREFIX + ".message"); } // 在Queue模式中,对消息的监听需要对containerFactory进行配置 @Bean("queueListener") public JmsListenerContainerFactory<?> queueJmsListenerContainerFactory(ConnectionFactory connectionFactory) { SimpleJmsListenerContainerFactory factory = new SimpleJmsListenerContainerFactory(); factory.setConnectionFactory(connectionFactory); factory.setPubSubDomain(false); return factory; } @Bean public ConnectionFactory connectionFactory() { return new ActiveMQConnectionFactory(username, password, brokerUrl); } @Bean public JmsMessagingTemplate jmsMessageTemplate() { return new JmsMessagingTemplate(connectionFactory()); } }

2023-06-06 上传