Apache ActiveMQ是目前比较流行的开源、多协议、基于Java的消息服务器之一。它支持行业标准协议,因此用户可以在各种语言平台上获得范围广泛而高效客户端。C、C++、Python、.NET等编程语言。使用无所不在的AMQP协议集成您的多平台应用程序。使用STOMP替换WebSockets在Web应用程序之间交换消息。使用MQTT协议管理物联网设备。支持你现有及其他的JMS基础架构。ActiveMQ提供了支持任何消息传递用例的能力和灵活性。
下载地址:http://activemq.apache.org/components/classic/download/
官方文档:http://activemq.apache.org/components/classic/documentation
FAQ帮助文档:http://activemq.apache.org/faq
1.配置连接工厂
@Bean public ActiveMQConnectionFactory activeMQConnectionFactory(){ ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(); //factory.setBrokerURL("mqtt://0.0.0.0:1883"); factory.setBrokerURL("tcp://0.0.0.0:61616"); return factory; }
2.配置JmsTemplate(生产者)
@Bean public JmsTemplate jmsTemplate(){ JmsTemplate jmsTemplate = new JmsTemplate(); jmsTemplate.setConnectionFactory(this.activeMQConnectionFactory()); return jmsTemplate; }
3.配置监听器(消费者)
/** * new an activeMQ queue. * @return */ @Bean public ActiveMQQueue activeMQQueue(){ ActiveMQQueue queue = new ActiveMQQueue("queue/default"); return queue; } /** * new an activeMQ message listener. * @return */ @Bean public ActiveMQMessageListener activeMQMessageListener(){ return new ActiveMQMessageListener(); } /** * default message listener container. * @return */ @Bean public DefaultMessageListenerContainer defaultMessageListenerContainer(){ DefaultMessageListenerContainer container = new DefaultMessageListenerContainer(); container.setConnectionFactory(this.activeMQConnectionFactory()); container.setDestination(this.activeMQQueue()); container.setMessageListener(this.activeMQMessageListener()); return container; }
配置起来非常简单,那么使用起来呢,下面来看一个例子:
@Autowired private JmsTemplate jmsTemplate;//注入JMS模板类(生产者) @Autowired private ActiveMQQueue queue;//注入消息队列 @RequestMapping(value = "/test", method = RequestMethod.GET) public ResultResp<Void> test(HttpServletRequest request) { ResultResp<Void> resp = new ResultResp<>(); ActiveMQMessagePojo mqMessagePojo = new ActiveMQMessagePojo("Test for demo..." + System.currentTimeMillis()); jmsTemplate.send(queue, mqMessagePojo); return resp; } //ActiveMQMessagePojo实体类: import org.springframework.jms.core.MessageCreator; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.Session; /** * MQ message * Created by alan on 2018/1/13. */ public class ActiveMQMessagePojo implements MessageCreator { private String msg; public ActiveMQMessagePojo(){ } public ActiveMQMessagePojo(String msg){ this.msg = msg; } @Override public Message createMessage(Session session) throws JMSException { return session.createTextMessage(msg); } }
就是这样子简单。