[activemq]+spring的使用
一、生产端(Producer)
applicationContext.xml中的配置:
<?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-3.0.xsd"> <!-- 真正可以产生Connection的ConnectionFactory,由对应的 JMS服务厂商提供 -->
<bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://192.168.137.1:61616" />
<property name="userName" value="afeng" />
<property name="password" value="111111" />
</bean> <!-- Spring用于管理真正的ConnectionFactory的ConnectionFactory -->
<bean id="connectionFactory"
class="org.springframework.jms.connection.SingleConnectionFactory">
<!-- 目标ConnectionFactory对应真实的可以产生JMS Connection的ConnectionFactory -->
<property name="targetConnectionFactory" ref="targetConnectionFactory" />
</bean> <!-- 定义JmsTemplate的Queue类型 -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<constructor-arg ref="connectionFactory"/>
<!-- 非pub/sub模型(发布/订阅),即队列模式 -->
<property name="pubSubDomain" value="false"/>
</bean> <bean id="queueSender" class="com.afeng.utils.activeMq.QueueSender">
<property name="JmsTemplate" ref="jmsTemplate"/>
</bean> <!-- 定义JmsTemplate的Topic类型 -->
<bean id="jmsTopicTemplate" class="org.springframework.jms.core.JmsTemplate">
<!-- 这个connectionFactory对应的是我们定义的Spring提供的那个ConnectionFactory对象 -->
<constructor-arg ref="connectionFactory"/>
<!-- pub/sub模型(发布/订阅) -->
<property name="pubSubDomain" value="true"/>
</bean> <bean id="topicSender" class="com.afeng.utils.activeMq.TopicSender">
<property name="jmsTemplate" ref="jmsTopicTemplate"/>
</bean> </beans>
两个封装的类:QueueSender
package com.afeng.utils.activeMq; import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import org.springframework.stereotype.Component; import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session; @Component
public class QueueSender { private JmsTemplate jmsTemplate;//通过@Qualifier修饰符来注入对应的bean public JmsTemplate getJmsTemplate() {
return jmsTemplate;
} public void setJmsTemplate(JmsTemplate jmsTemplate) {
this.jmsTemplate = jmsTemplate;
} /**
* 发送一条消息到指定的队列(目标)
* @param queueName 队列名称
* @param message 消息内容
*/
public void send(String queueName,final String message){
jmsTemplate.send(queueName, new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
return session.createTextMessage(message);
}
});
}
}
TopicSender
package com.afeng.utils.activeMq; import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import org.springframework.stereotype.Component; import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session; @Component
public class TopicSender {
private JmsTemplate jmsTemplate; public JmsTemplate getJmsTemplate() {
return jmsTemplate;
} public void setJmsTemplate(JmsTemplate jmsTemplate) {
this.jmsTemplate = jmsTemplate;
} public void send(String queueName, final String message) {
this.jmsTemplate.send(queueName, new MessageCreator() {
@Override
public Message createMessage(Session session) throws JMSException {
return session.createTextMessage(message);
}
});
}
}
在实际场景中的使用:
@Autowired
private QueueSender queueSender; queueSender.send("spring-queue","要发送的数据");
二、消费端(Comsumer)
applicationContext.xml中的配置:
<?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-3.0.xsd"> <!-- 真正可以产生Connection的ConnectionFactory,由对应的 JMS服务厂商提供 -->
<bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://192.168.137.1:61616" />
<property name="userName" value="afeng" />
<property name="password" value="111111" />
</bean> <!-- Spring用于管理真正的ConnectionFactory的ConnectionFactory -->
<bean id="connectionFactory"
class="org.springframework.jms.connection.SingleConnectionFactory">
<!-- 目标ConnectionFactory对应真实的可以产生JMS Connection的ConnectionFactory -->
<property name="targetConnectionFactory" ref="targetConnectionFactory" />
</bean> <!--这个是队列目的地,点对点的 -->
<bean id="queueDestination" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg>
<value>spring-queue</value>
</constructor-arg>
</bean>
<!--这个是主题目的地,一对多的 -->
<bean id="topicDestination" class="org.apache.activemq.command.ActiveMQTopic">
<constructor-arg value="spring-topic" />
</bean> <!--监听 数据发生变化-->
<bean id="itemChangeListener" class="com.afeng.listener.ItemChangeListener" />
<bean class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory" />
<property name="destination" ref="queueDestination" />
<property name="messageListener" ref="itemChangeListener" />
</bean> </beans>
监听的类ItemChangeListener:
package com.afeng.listener; import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage; public class ItemChangeListener implements MessageListener {
@Override
public void onMessage(Message message) {
try {
TextMessage textMessage = null;
String queuetxt = "";
//取商品id
if (message instanceof TextMessage) {
textMessage = (TextMessage) message;
queuetxt = textMessage.getText();
}
System.err.println("queuetxt="+queuetxt);
} catch (Exception e) {
e.printStackTrace();
}
}
}
[activemq]+spring的使用的更多相关文章
- activemq spring 配置
Apache ActiveMQ是最流行和最强大的开源消息集成模式服务器.Apache ActiveMQ是速度快,支持多跨语言的客户端和协议,带有易于使用企业集成模式和许多先进的功能在充分支持JMS 1 ...
- activemq spring 集成与测试
1.下载安装activemq 2.pom依赖配置 3.spring配置 4.生产消息,消费消息(同步消费),监听消息(异步消费) 4.测试 5.参考博客 http://www.cnblogs.com/ ...
- ActiveMQ Spring 集成配置
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms&l ...
- Activemq -- Spring 整合
转自: https://www.cnblogs.com/jaycekon/p/ActiveMq.html
- ActiveMQ spring (一)
在5.8.0版本下 配置成功. 参考文档:http://yinbinhome.iteye.com/blog/1273228
- ActiveMQ学习笔记(5)——使用Spring JMS收发消息
摘要 ActiveMQ学习笔记(四)http://my.oschina.net/xiaoxishan/blog/380446 中记录了如何使用原生的方式从ActiveMQ中收发消息.可以看出,每次 ...
- ActiveMQ(5.10.0) - Spring Support
Maven Dependency: <dependencies> <dependency> <groupId>org.apache.activemq</gro ...
- spring整合JMS - 基于ActiveMQ实现
一. 开篇语 继上一篇apache ActiveMQ之初体验后, 由于近期一直在复习spring的东西, 所以本文就使用spring整合下JMS. 二. 环境准备 1. ActiveMQ5.2.0 ( ...
- ActiveMQ学习笔记(6)----ActiveMQ整合Spring开发
1. 添加依赖 spring 提供了对JMS的支持,需要添加Spring支持jms的包和Spring的核心包,如下: <dependency> <groupId>org.apa ...
随机推荐
- 【OGG 故障处理】OGG-01031
故障原因 -------------------- 网络异常,导致DP进程异常中断 故障现象 -------------------- 源端DP 进程全部挂起,且启动失败 GGSCI 34> ...
- web.py之cookie和session
官方给的session例子这里就不讲了.下面直接将怎么设置session,取session: session相关代码一定要放在web.py框架的Main.py里面. # Main.py # 设置ses ...
- 3.Hbase数据模型
3.1.Hbase数据模型: 概念视图: 物理视图 Hbase数据在存储系统中是以列族来体现的[Column Family],任何时候可以随意的添加一列到已经存在的列族中 空的单元格在表中不做存储也不 ...
- 学JAVA有哪些好的技巧方法?干货分享
作为编程语言届的老大哥,学习JAVA的人数不胜数,在这里分享一些学习JAVA的技巧以及方法,当然,这些技巧及方法使用范围包含但不限于JAVA. ① 笔记软件 印象笔记:多端互通很方便(https:// ...
- Paper Reading:FPN
FPN 论文:Feature Pyramid Networks for Object Detection 发表时间:2017 发表作者:(Facebook AI Research)Tsung-Yi L ...
- java 基础:方法调用中的值传递是call by value,并且传递的是参数的值的拷贝,而不是引用
public class TestExtends { public static void main(String[]args){ int s = 10; System.out.println(Sys ...
- 5 webpack-dev-server的常用命令参数--open --port 3000 --contentBase src --hot
--open 自动打开浏览器 --port 3000 指定端口3000 --contentBase src 内容的根路径 --hot 热重载,热更新.打补丁,实现浏览器的无刷新
- mysql数据库高并发处理
总体思想:短, 少, 分流 短: 1.页面静态化, 2.使用缓存 3.使用存储过程, 对于处理一次请求需要多次访问数据库的操作, 将操作整合到存储过程, 这样只需要一次数据库访问 4.延迟修改, 将修 ...
- linux实操_shell位置参数变量
基本语法: 脚本内容: 输出效果:
- Java并发包--LinkedBlockQueue
转载请注明出处:http://www.cnblogs.com/skywang12345/p/3503458.html LinkedBlockingQueue介绍 LinkedBlockingQueue ...