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 ...
随机推荐
- import变量名,导入模块
想要把不同的模块名赋值到变量,然后import进来 直接使用下面的方法是不行的: moudle="os" import moudle 会提示下面的错误: ImportErr ...
- springboot 面向切面
@Aspect @Configuration public class AspectTest { @Pointcut("execution(public String xxx.xxx.xxx ...
- keras—神经网络CNN—CIFAR_10图像识别
1 from keras.datasets import cifar10 from keras.utils import np_utils import matplotlib.pyplot as pl ...
- 在java中使用ffmpeg将amr格式的语音转为mp3格式
ffmpeg是一个非常强大的音视频处理工具,官网是:http://ffmpeg.org/. 由于ffmpeg在windows上和linux系统上的执行文件不一样(Windows上不需要安装ffmpeg ...
- PAT L2-005 集合相似度(模拟集合set)
给定两个整数集合,它们的相似度定义为:Nc/Nt*100%.其中Nc是两个集合都有的不相等整数的个数,Nt是两个集合一共有的不相等整数的个数.你的任务就是计算任意一对给定集合的相似度. 输入格式: 输 ...
- SweetAlert2 弹窗
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 在CentOS7上部署Kubernetes集群
在CentOS7上部署Kubernetes集群 文/FCBusquest 2015-12-22 18:36:00 简介 Kubernetes(k8s)是Google开源的大规模容器集群管理系统, 本文 ...
- 11-st跳舞消耗体力最少
/* 炫舞家 ST 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 ...
- spring框架之依赖注入(DI)
1. IOC和DI的概念 * IOC -- Inverse of Control,控制反转,将对象的创建权反转给Spring!! * DI -- Dependency Injection,依赖注入,在 ...
- 淘宝、天猫又开源了一个动态化、高性能的UI框架
前言 淘宝.天猫一直致力于解决 页面动态化的问题 在2017年的4月发布了v1.0解决方案:Tangram模型 及其对应的 Android库 vlayout,该解决方案在手机淘宝.天猫 Android ...