博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ActiveMQ集成Spring并发送消息
阅读量:6224 次
发布时间:2019-06-21

本文共 5462 字,大约阅读时间需要 18 分钟。

hot3.png

一、创建mvaen项目

4.0.0
    
com.dev
MessageQueen
jar
    
1.0
MessageQueen
http://maven.apache.org
UTF-8
junit
junit
4.12
org.hamcrest
hamcrest-core
1.3
org.apache.activemq
activemq-all
5.14.5
org.apache.activemq
activemq-pool
5.14.5
commons-pool
commons-pool
1.6
org.springframework
spring-context
4.1.8.RELEASE
org.springframework
spring-test
4.1.8.RELEASE

二、添加ActiveMQ属性配置文件activemq.properties

activemq.brokerurl=tcp://127.0.0.1:61616activemq.username=**********acticemq.password=wuhanhongdevactivemq.pool.max=10activemq.queenName=**********

三、添加Spring和ActiveMQ集成文件spring-context.xml、spring-activemq.xml

spring-context.xml

spring-activemq.xml

        
            
                
com.dev.messagequeen.model            
        
${activemq.queenName}

四、代码编写

MsgProducer.java
package com.dev.messagequeen.listener;import com.dev.messagequeen.model.UserModel;import org.springframework.jms.listener.SessionAwareMessageListener;import javax.jms.*;public class MessageQueenListener implements SessionAwareMessageListener
{ public void onMessage(Message message, Session session) throws JMSException { if(message instanceof MapMessage){ MapMessage mapMessage = (MapMessage)message; System.out.println(mapMessage.getString("message")); } if(message instanceof ObjectMessage){ ObjectMessage objectMessage = (ObjectMessage)message; UserModel userModel = (UserModel)objectMessage.getObject(); if(userModel != null){ System.out.println("接受到的消息是:\r\n"+userModel.toString()); } } }}
MsgConsumer.java
package com.dev.messagequeen.consumer;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.jms.core.JmsTemplate;import org.springframework.stereotype.Service;@Service("msgConsumer")public class MsgConsumer {    @Autowired    private JmsTemplate jmsTmp;    public void consumerMsg(){        //待续    }}
UserModel.java
package com.dev.messagequeen.model;import java.io.Serializable;public class UserModel implements Serializable{    private String name;    private String addr;    private String nickName;    private int age;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getAddr() {        return addr;    }    public void setAddr(String addr) {        this.addr = addr;    }    public String getNickName() {        return nickName;    }    public void setNickName(String nickName) {        this.nickName = nickName;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }}

单元测试:

AppTest.java
package com.dev;import com.dev.messagequeen.model.UserModel;import com.dev.messagequeen.producer.MsgProducer;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import org.springframework.test.context.junit4.SpringRunner;@RunWith(Spring4JunitRunner.class)@ContextConfiguration(locations = {"classpath:spring-context.xml"})public class AppTest {    @Autowired    private MsgProducer msgProducer;    @Test    public void testSend(){        for(int i=0; i<10; i++){            UserModel userModel = new UserModel();            userModel.setName("这是用户姓名"+i);            userModel.setAddr("中国云南");            userModel.setAge((i+1)*10);            userModel.setNickName("NickName");            msgProducer.sendMsg(userModel);        }    }}

五、整体项目结构

174702_WJqh_940506.png

 

測試說明:

  1.   配置了MessageQueenListener即配置了消費端,無需自己再實現消費端。
  2.  必須添加trustedPackages屬性執行model包才能消費對象消息(ObjectMessage)

更多期待:

  1. 與Spring集成可以有多個生產者和多個消費者 
  2. 採用ActiveMQ集群
  3. 添加多線程支持

转载于:https://my.oschina.net/u/940506/blog/914955

你可能感兴趣的文章
iconfont字体图标的使用方法--超简单!
查看>>
在.net桌面程序中自定义鼠标光标
查看>>
Java命令学习系列(四)——jstat
查看>>
flash设置里面:您的 Flash 设置会一直保留到您退出 Chrome 为止。
查看>>
CSS再学习 之背景色 背景图片
查看>>
Java常见排序算法之折半插入排序
查看>>
linux如何查看所有的用户和组信息?
查看>>
(原創) C++ Primer 4th與Modern C++ (C/C++)
查看>>
电子书下载:Silverlight 4 Business Intelligence Software
查看>>
Android startActivityForResult()的用法
查看>>
正则域名
查看>>
Delphi中COM自动化对象中使用事件
查看>>
WebAPI前置知识:HTTP与RestfulAPI
查看>>
单一职责原则
查看>>
Windows Phone 7发布了
查看>>
c#必须对其强签名
查看>>
如何在IIS6,7中部署ASP.NET网站
查看>>
HDU 4451 Dressing
查看>>
nhibernate学习之集合组合依赖
查看>>
Creating corner with different angle by using css and js
查看>>