ActiveMq 配置多队列
一直在赶项目,好久没有写博文了,中间偶尔有些代码什么的,也都是放到github了,不过大多都是测试代码,毕竟有些成型的东西是给公司写的,鉴于职业道德,还是不好公开。
言归正传,这两天在接入第三方的收费管理系统,后台有个扫描记录的,数据然后发送到我这里,然后我来处理。
毕竟是走的restful的方式,说到底是比较多的http请求,他们不关心结果,只知道通信成功即可。于是,又用到了消息队列。前面用的是activemq,这里需要再配置一个队列。
如果不整合spring,用原生的activemq代码来写的话,多个队列很容易实现。但是整合spring后,大多都是配置一个队列。琢磨了一下,这里配置了两个队列,其实就是一个配置文件。因为是测试,这样写的有点不雅观。
配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 消息中介-->
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://127.0.0.1:61616?wireFormat.maxInactivityDuration=0"/>
<property name="useAsyncSend" value="true" />
</bean> <!-- 队列目的地-->
<bean id="myQueueOne" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="QueueDemoOne"/>
</bean>
<bean id="myQueueTwo" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="QueueDemoTwo" />
</bean> <bean id="jmsTemplateOne" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory"/>
<!-- 设置默认的消息目的地-->
<property name="defaultDestination" ref="myQueueOne"/>
<property name="deliveryMode" value="1"></property>
<!-- 消息不持久化 -->
<property name="explicitQosEnabled" value="true"></property>
<!-- 由于receiver方法是同步的,所以我们在这里对接收设置超时时间-->
<!-- <property name="receiveTimeout" value="60000"/> -->
</bean>
<bean id="jmsTemplateTwo" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory"/>
<!-- 设置默认的消息目的地-->
<property name="defaultDestination" ref="myQueueTwo"/>
<property name="deliveryMode" value="1"></property>
<!-- 消息不持久化 -->
<property name="explicitQosEnabled" value="true"></property>
</bean> <!-- 消息发送者-->
<bean id="producer1" class="com.ww.topic.SenderOne">
<property name="jmsTemplate" ref="jmsTemplateOne"/>
<!-- 消息目的地,因为jmsTemplate有默认的了,所以这里可以省略
<property name="destination" ref=" myQueue "/>-->
</bean>
<bean id="producer2" class="com.ww.topic.SenderTwo">
<property name="jmsTemplate" ref="jmsTemplateTwo"/>
<!-- 消息目的地,因为jmsTemplate有默认的了,所以这里可以省略
<property name="destination" ref=" myQueue "/>-->
</bean> <!-- 消息接收监听器用于异步接收消息-->
<bean id="container1" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory"/>
<property name="destination" ref="myQueueOne"/>
<property name="messageListener" ref="jmsListenerOne"/>
</bean>
<bean id="container2" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory"/>
<property name="destination" ref="myQueueTwo"/>
<property name="messageListener" ref="jmsListenerTwo"/>
</bean> <!-- 消息监听实现方法一 -->
<bean id="jmsListenerOne" class="com.ww.topic.ListenerOne">
</bean>
<bean id="jmsListenerTwo" class="com.ww.topic.ListenerTwo">
</bean> </beans>
其实是配置了两个监听器,然后把各自的destination ,sender,listener配置了两个。
测试代码:
sender:
package com.ww.topic; import org.junit.Test;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator; import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import javax.jms.TextMessage; /**
* Created by wang on 15-3-24.
*/
public class SenderOne {
private JmsTemplate jmsTemplate; public JmsTemplate getJmsTemplate() {
return jmsTemplate;
} public void setJmsTemplate(JmsTemplate jmsTemplate) {
this.jmsTemplate = jmsTemplate;
} @Test
public void sendQueue(){
jmsTemplate.send(new MessageCreator() {
@Override
public Message createMessage(Session session) throws JMSException {
TextMessage message = session.createTextMessage();
message.setText("This is one sender");
return message;
}
});
}
}
listener:
package com.ww.topic; import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage; /**
* Created by wang on 15-3-24.
*/
public class ListenerOne implements MessageListener {
@Override
public void onMessage(Message message) {
TextMessage msg = (TextMessage) message;
try {
System.out.println("REC: "+msg.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}
第二个和第一个是同理的代码。
源码下载:https://github.com/ThinkCats/Queue
ActiveMq 配置多队列的更多相关文章
- 从零开始学 Java - Spring 集成 ActiveMQ 配置(一)
你家小区下面有没有快递柜 近两年来,我们收取快递的方式好像变了,变得我们其实并不需要见到快递小哥也能拿到自己的快递了.对,我说的就是类似快递柜.菜鸟驿站这类的代收点的出现,把我们原来快递小哥必须拿着快 ...
- 从零开始学 Java - Spring 集成 ActiveMQ 配置(二)
从上一篇开始说起 上一篇从零开始学 Java - Spring 集成 ActiveMQ 配置(一)文章中讲了我关于消息队列的思考过程,现在这一篇会讲到 ActivMQ 与 Spring 框架的整合配置 ...
- zookeeper + LevelDB + ActiveMQ实现消息队列高可用
通过集群实现消息队列高可用. 消息队列在项目中存储订单.邮件通知.数据分发等重要信息,故对消息队列稳定可用性有高要求. 现在通过zookeeper选取activemq leader的形式实现当某个ac ...
- ActiveMQ配置文档
本文介绍一对一.一对多.持久化.非持久化消息配置方式 一.创建项目 导入jar 二.创建MQ.xml <!-- 配置JMS连接工厂 --> <bean id="connec ...
- ACTIVEMQ主题、队列设置用户名密码
修改文件%ACTIVEMQ_BASE%/conf/activemq.xml,用户名密码储存在文件%ACTIVEMQ_BASE%/conf/credentials.properties中, active ...
- Spring集成ActiveMQ配置 --转
转自:http://suhuanzheng7784877.iteye.com/blog/969865 集成环境 Spring采用2.5.6版本,ActiveMQ使用的是5.4.2,从apache站点可 ...
- activeMq 配置(一)
基础知识补充 1.ActiveMQ从入门到精通(一)https://www.jianshu.com/p/ecdc6eab554c 2.ActiveMQ从入门到精通(二)https://www.jian ...
- Spring和ActiveMQ集成实现队列消息以及PUB/SUB模型
前言:本文是基于Spring和ActiveMQ的一个示例文章,包括了Point-To-Point的异步队列消息和PUB/SUB(发布/订阅)模型,只是做了比较简单的实现,无任何业务方面的东西,作为一个 ...
- activemq 的延迟队列和幂等性检查
一. 延迟消息队列 1. 在提交支付之后,可以发送一个延迟检查的队列,来主动查询用户在支付宝上的支付状态 在mq的配置/config/activeMq.xml的broker实例上配置 schedule ...
随机推荐
- Java8 lambda表达式语法 1
本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘.因为本人也是刚刚开始学习Java8,所以文中肯定有错误和理解偏差的地方,希望大家帮忙指出,我会持续修改和优化.本文是该系列的第一篇, ...
- where T:new() 是什么意思
经常看到方法后面加where T:new() ,下面来解释下 比如如下这个方法 protected static T CreateNewInstance<T>() where T : ...
- Neuron network
关于神经网络你不能不知道的一切 作者|Kailash Ahirwar 编译|Sambodhi 编辑|Vincent AI前线导语:理解什么是人工智能,以及机器学习和深度学习是如何影响人工智能的,这是一 ...
- 使用百度网盘配置私有Git服务
GitHub上免费的版本只能开源代码库,有时候需要配置些私有的服务,不方便公开.现在免费的网盘的容量越来越大,可以用来做存储的服务,如果只使用网盘存储合并代码很不方便,所以使用网盘+git 配置私有仓 ...
- swift - 网络请求数据处理 - 协议处理
1. 在类的模型之中或类的结构体 里面 实现下面方法 /// 添加预约数据源模型 - rootModel class DataModelForAddNewBespeakModel: NSObject ...
- iOS - 组件化探究之私有库的创建
http://www.cocoachina.com/ios/20180511/23359.html
- 搭建事务管理转账案例的环境(强调:简化开发,以后DAO可以继承JdbcDaoSupport类)
1. 步骤一:创建WEB工程,引入需要的jar包 * IOC的6个包 * AOP的4个包 * C3P0的1个包 * MySQL的驱动包 * JDBC目标2个包 * 整合JUnit测试包2.步骤二:创建 ...
- IIS不能下载.apk文件
IIS服务器不能下载.apk文件的原因:iis的默认MIME类型中没有.apk文件,所以无法下载. 打开IIS服务管理器,找到服务器,右键-属性,打开IIS服务属性: 单击MIME类型下的“MIME类 ...
- jetty 8.0 add filter example
http://zyn010101.iteye.com/blog/1679798 package com.cicc.gaf.sso.server;import java.io.IOException;i ...
- Golang之Mysql操作
话说当年武大郎对着电脑一顿噼里啪啦,,,对mysql增删改查 增加insert package main import ( "fmt" "github.com/jmoir ...