Spring集成Apache ActiveMQ配置实现

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);
    }

}

就是这样子简单。

 

Leave a Comment