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);
}
}
就是这样子简单。


近期评论