spring jms结合activemq

一、下载activemq

这个例子使用的版本是5.9.0

链接:http://download.csdn.net/download/hpw90333/6652367

先下载了5.14.2运行后出错:

javax.jms.JMSException: Cannot send, channel has already failed: tcp://127.0.0.1:61616

Transport Connection to: tcp://127.0.0.1:50941 failed: java.io.EOFException | org.apache.activemq.broker.TransportConnection.Transport | ActiveMQ Transport: tcp:///127.0.0.1:50941@61616

暂时没查出原因

猜测有可能是要添加新的配置或者是spring的版本问题

 

二、解压将activemq-broker-5.9.0.jar activemq-client-5.9.0.jar放入spring项目中注意机器上运行的版本和jar包的匹配

三、在spring的配置文件中配置activemq 的bean ActiveMQConnectionFactory注入要连接的activemq地址brokerURL,例如:tcp://localhost:61616(61616为activemq的端口)

配置spring jmstemplate 注入属性mqConnectionFactory

四、测试

测试生产端:

ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
        JmsTemplate jmsTemplate = app.getBean(JmsTemplate.class);
        jmsTemplate.convertAndSend("gamelife.alert.queue", "test message");

获取jmstemplate然后调用convertAndSend向指定的频道发送消息

 

测试消费端:

ApplicationContext context = new ClassPathXmlApplicationContext(
                "applicationContext.xml");
        JmsTemplate jmsTemplate = (JmsTemplate) context.getBean("jmsTemplate");
        //System.out.println(jmsTemplate == null);
        String message = (String) jmsTemplate
                .receiveAndConvert("gamelife.alert.queue");
        System.out.println(message);

获取 jmstemplate调用recieveAndConvert方法从指定频道读取消息

 

可以在消费端直接配置监听:

写一个监听的bean实现jms 的MessageListener接口

package com.hy.jms;

import javax.jms.Message;
import javax.jms.MessageListener;

public class JmsHandler implements MessageListener{

    @Override
    public void onMessage(Message message) {
        System.out.println("收到消息:"+message);
    }

}

 

配置bean 将bean加入jms listener的监听容器中 

<bean name="jmsHandler" class="com.hy.jms.JmsHandler"></bean>
    <jms:listener-container>
        <jms:listener destination="gamelife.alert.queue2" ref="jmsHandler"/>
    </jms:listener-container>

 

 

说明:

jms为异步消息

结构图如下:

 

posted on 2017-02-26 13:46  _故乡的原风景  阅读(695)  评论(0编辑  收藏  举报