博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在Spring下集成ActiveMQ
阅读量:4618 次
发布时间:2019-06-09

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

1.参考文献

2.环境

在前面的一篇 中我们实现了消息的异步传送,这篇博文将如何在spring环境下集成ActiveMQ。如果要在spring下集成ActiveMQ,那么就需要将如下jar包导入项目:

本文有两篇参考文献,因此有两个实例,项目结构如下图所示:

3.实例1

信息发送者:HelloSender.java

package edu.sjtu.erplab.springactivemq; import javax.jms.JMSException; import javax.jms.Session; import javax.jms.Destination; import javax.jms.Message; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.jms.core.JmsTemplate; import org.springframework.jms.core.MessageCreator; public class HelloSender { /** * @param args * jmsTemplate和destination都是在spring配置文件中进行配制的 * Sender只使用了配置文件中的jmsFactory,jmsTemplate,还有destination这三个属性 */ public static void main(String[] args) { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext-jms.xml"); JmsTemplate template = (JmsTemplate) applicationContext.getBean("jmsTemplate"); Destination destination = (Destination) applicationContext.getBean("destination"); template.send(destination, new MessageCreator() { public Message createMessage(Session session) throws JMSException { return session.createTextMessage("发送消息:Hello ActiveMQ Text Message2!"); } }); System.out.println("成功发送了一条JMS消息"); } }

信息接受者:ProxyJMSConsumer.java

package edu.sjtu.erplab.springactivemq; import javax.jms.Destination; import javax.jms.TextMessage; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.jms.core.JmsTemplate; /** * JMS消费者 * 消息题的内容定义 * 消息对象 接收消息对象后: 接收到的消息体* 

*/ public class ProxyJMSConsumer { public ProxyJMSConsumer() { } private JmsTemplate jmsTemplate; public JmsTemplate getJmsTemplate() { return jmsTemplate; } public void setJmsTemplate(JmsTemplate jmsTemplate) { this.jmsTemplate = jmsTemplate; } /** * 监听到消息目的有消息后自动调用onMessage(Message message)方法 */ public void recive() { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext-jms.xml"); Destination destination = (Destination) applicationContext.getBean("destination"); while (true) { try { TextMessage txtmsg = (TextMessage) jmsTemplate .receive(destination); if (null != txtmsg) { System.out.println("[DB Proxy] " + txtmsg); System.out.println("[DB Proxy] 收到消息内容为: " + txtmsg.getText()); } else break; } catch (Exception e) { e.printStackTrace(); } } } }

客户端:JMSTest.java

package edu.sjtu.erplab.springactivemq; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class JMSTest {
/** * @param args */ public static void main(String[] args) { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext-jms.xml"); ProxyJMSConsumer proxyJMSConsumer = (ProxyJMSConsumer) applicationContext.getBean("messageReceiver"); proxyJMSConsumer.recive(); System.out.println("初始化消息消费者"); } }

Spring配置文件:applicationContext-jms.xml

tcp://127.0.0.1:61616

测试方法:首先运行JMSTest,然后运行HelloSender。

4.实例2

消息发送者: Sender

package edu.sjtu.erplab.springactivemq2; import javax.jms.JMSException; import javax.jms.MapMessage; import javax.jms.Message; import javax.jms.Session; import org.springframework.jms.core.JmsTemplate; import org.springframework.jms.core.MessageCreator; public class Sender { private JmsTemplate jmsTemplate; //getter and setter public JmsTemplate getJmsTemplate() { return jmsTemplate; } public void setJmsTemplate(JmsTemplate jmsTemplate) { this.jmsTemplate = jmsTemplate; } public void sendInfo() { jmsTemplate.send(new MessageCreator() { public Message createMessage(Session session) throws JMSException { MapMessage message = session.createMapMessage(); message.setString("lastName", "ppp"); return message; } }); } }

消息发送客户端:SenderTest

package edu.sjtu.erplab.springactivemq2; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class SenderTest {
public static void main(String[] args) { // TODO 自动生成方法存根 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); Sender sender = (Sender) context.getBean("sender"); sender.sendInfo(); } }

消息接收者:Receiver

package edu.sjtu.erplab.springactivemq2; import javax.jms.JMSException; import javax.jms.MapMessage; import org.springframework.jms.core.JmsTemplate; import org.springframework.jms.support.JmsUtils; public class Receiver { private JmsTemplate jmsTemplate; //getter and setter public JmsTemplate getJmsTemplate() { return jmsTemplate; } public void setJmsTemplate(JmsTemplate jmsTemplate) { this.jmsTemplate = jmsTemplate; } /** * 构造函数 */ public Receiver() { } public String receiveMessage() { String my = ""; MapMessage message = (MapMessage) jmsTemplate.receive(); try { my = message.getString("lastName"); } catch (JMSException e) { throw JmsUtils.convertJmsAccessException(e); } return my; } }

消息接收客户端:ReceiverTest

package edu.sjtu.erplab.springactivemq2; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class ReceiverTest {
public static void main(String[] args) { // TODO 自动生成方法存根 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); Receiver receiver = (Receiver) context.getBean("receiver"); System.out.print(receiver.receiveMessage()); } }

Spring配置文件:applicationContext.xml

转载于:https://www.cnblogs.com/quchengfeng/p/4829466.html

你可能感兴趣的文章
解决Jupyter notebook[import tensorflow as tf]报错
查看>>
Windows平台下使用ffmpeg和segmenter实现m3u8直播点播
查看>>
python网络画图——networkX
查看>>
ubuntu16.04文件形式安装mongodb
查看>>
SpringBoot------ActiveMQ安装
查看>>
详细了解 int? 类型
查看>>
纯js事件注册方法(解决兼容性)
查看>>
Ultimate Facebook Messenger for Business Guide (Feb 2019)
查看>>
博客开通第77天
查看>>
[git] warning: LF will be replaced by CRLF | fatal: CRLF would be replaced by LF
查看>>
mysql索引详解
查看>>
Log4j maven依赖配置
查看>>
HDU-4472 Count 递推
查看>>
活用这25种图表效果,你的数据可视化也能变得高级酷炫
查看>>
Azure PowerShell (12) 通过Azure PowerShell创建SSH登录的Linux VM
查看>>
[New Portal]Windows Azure Virtual Machine (16) 使用Azure PowerShell创建Azure Virtual Machine
查看>>
GMM模型
查看>>
unity3d log管理
查看>>
scp与rsync限速
查看>>
实验2-1-5 将x的平方赋值给y
查看>>