热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:ActiveMQ之与Spring集成

篇首语:本文由编程笔记#小编为大家整理,主要介绍了ActiveMQ之与Spring集成相关的知识,希望对你有一定的参考价值。增加maven依赖spring版

篇首语:本文由编程笔记#小编为大家整理,主要介绍了ActiveMQ之与Spring集成相关的知识,希望对你有一定的参考价值。


增加maven依赖

spring版本此处是4.3.5


<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-jmsartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>org.apache.activemqgroupId>
<artifactId>activemq-allartifactId>
<version>5.10.0version>
dependency>

<dependency>
<groupId>org.apache.xbeangroupId>
<artifactId>xbean-springartifactId>
<version>4.5version>
dependency>
<dependency>
<groupId>org.apache.activemqgroupId>
<artifactId>activemq-poolartifactId>
<version>5.10.0version>
dependency>

增加spring-activemq.xml文件


xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context
="http://www.springframework.org/schema/context"
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
xmlns:amq
="http://activemq.apache.org/schema/core"
xmlns:jms
="http://www.springframework.org/schema/jms"
xsi:schemaLocation
="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/jms
http://www.springframework.org/schema/jms/spring-jms.xsd
http://activemq.apache.org/schema/core
http://activemq.apache.org/schema/core/activemq-core.xsd"
>



<amq:connectionFactory id="amqConnectionFactory" brokerURL="tcp://localhost:61616" userName="admin" password="admin" />


<bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">

<property name="targetConnectionFactory" ref="amqConnectionFactory">property>



<property name="sessionCacheSize" value="100" />
bean>

<bean id="demoQueueDestination" class="org.apache.activemq.command.ActiveMQQueue">

<constructor-arg><value>myqueuevalue>constructor-arg>
bean>

<bean id="jmsQueueTemplate" class="org.springframework.jms.core.JmsTemplate">


<property name="connectionFactory" ref="connectionFactory"/>
<property name="defaultDestination" ref="demoQueueDestination" />

<property name="pubSubDomain" value="false" />
bean>

<bean id="queueListenerContainer1" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory" />
<property name="pubSubDomain" value="false"/>
<property name="destination" ref="demoQueueDestination" />
<property name="messageListener" ref="queueListenter1" />
bean>
<bean id="queueListenter1" class="com.zns.listenter.QueueListenter1">bean>

<bean id="demoTopicDestination" class="org.apache.activemq.command.ActiveMQTopic">

<constructor-arg><value>myqueuevalue>constructor-arg>
bean>

<bean id="jmsTopicTemplate" class="org.springframework.jms.core.JmsTemplate">


<property name="connectionFactory" ref="connectionFactory"/>
<property name="defaultDestination" ref="demoTopicDestination" />

<property name="pubSubDomain" value="true" />
bean>

<bean id="topicListenerContainer1" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory" />
<property name="pubSubDomain" value="true"/>
<property name="destination" ref="demoTopicDestination" />
<property name="messageListener" ref="topicListenter1" />
bean>
<bean id="topicListenerContainer2" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory" />
<property name="pubSubDomain" value="true"/>
<property name="destination" ref="demoTopicDestination" />
<property name="messageListener" ref="topicListenter2" />
bean>
<bean id="topicListenter1" class="com.zns.listenter.TopicListenter1">bean>
<bean id="topicListenter2" class="com.zns.listenter.TopicListenter2">bean>
beans>

 

 

引入spring-activemq.xml文件

 

消息监听器


package com.zns.listenter;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

public class QueueListenter1 implements MessageListener {
public void onMessage(Message message) {
TextMessage textMsg
= (TextMessage) message;
try {
System.out.println(
"消息内容是:" + textMsg.getText());
}
catch (JMSException e) {
e.printStackTrace();
}
}
}
package com.zns.listenter;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

public class TopicListenter1 implements MessageListener {
public void onMessage(Message message) {
TextMessage textMsg
= (TextMessage) message;
try {
System.out.println(
"监听者1 收到消息内容是:" + textMsg.getText());
}
catch (JMSException e) {
e.printStackTrace();
}
}
}
package com.zns.listenter;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

public class TopicListenter2 implements MessageListener {
public void onMessage(Message message) {
TextMessage textMsg
= (TextMessage) message;
try {
System.out.println(
"监听者2 收到消息内容是:" + textMsg.getText());
}
catch (JMSException e) {
e.printStackTrace();
}
}
}

控制器Controller核心代码


@Resource(name = "jmsQueueTemplate")
private JmsTemplate jmsQueueTemplate;

@Resource(name
= "demoQueueDestination")
@Autowired
private Destination demoQueueDestination;

@Resource(name
= "jmsTopicTemplate")
private JmsTemplate jmsTopicTemplate;

@Resource(name
= "demoTopicDestination")
@Autowired
private Destination demoTopicDestination;
final String msg="hello,queue...";
System.out.println(
"发送消息...");
jmsQueueTemplate.send(demoQueueDestination,
new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
return session.createTextMessage(msg);
}
});
final String msg="hello,topic...";
System.out.println(
"发送消息...");
jmsTopicTemplate.send(demoTopicDestination,
new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
return session.createTextMessage(msg);
}
});

发送消息后,可以看到监听器接收到消息


推荐阅读
  • 本文介绍了如何通过创建自定义 XML 文件来修改 Android 中 Spinner 的项样式,包括颜色和大小的调整。 ... [详细]
  • 本文详细介绍了跨站脚本攻击(XSS)的基本概念、工作原理,并通过实际案例演示如何构建XSS漏洞的测试环境,以及探讨了XSS攻击的不同形式和防御策略。 ... [详细]
  • Spring Security基础配置详解
    本文详细介绍了Spring Security的基础配置方法,包括如何搭建Maven多模块工程以及具体的安全配置步骤,帮助开发者更好地理解和应用这一强大的安全框架。 ... [详细]
  • SpringBoot底层注解用法及原理
    2.1、组件添加1、Configuration基本使用Full模式与Lite模式示例最佳实战配置类组件之间无依赖关系用Lite模式加速容器启动过程,减少判断配置类组 ... [详细]
  • 本文将详细介绍如何配置并整合MVP架构、Retrofit网络请求库、Dagger2依赖注入框架以及RxAndroid响应式编程库,构建高效、模块化的Android应用。 ... [详细]
  • 本文介绍了一种在 Android 开发中动态修改 strings.xml 文件中字符串值的有效方法。通过使用占位符,开发者可以在运行时根据需要填充具体的值,从而提高应用的灵活性和可维护性。 ... [详细]
  • 本文详细介绍了如何使用Linux下的mysqlshow命令来查询MySQL数据库的相关信息,包括数据库、表以及字段的详情。通过本文的学习,读者可以掌握mysqlshow命令的基本语法及其常用选项。 ... [详细]
  • 个人博客:打开链接依赖倒置原则定义依赖倒置原则(DependenceInversionPrinciple,DIP)定义如下:Highlevelmo ... [详细]
  • 本文介绍了如何通过安装和配置php_uploadprogress扩展来实现文件上传时的进度条显示功能。通过一个简单的示例,详细解释了从安装扩展到编写具体代码的全过程。 ... [详细]
  • 如何使用Maven将依赖插件一并打包进JAR文件
    本文详细介绍了在使用Maven构建项目时,如何将所需的依赖插件一同打包进最终的JAR文件中,以避免手动部署依赖库的麻烦。 ... [详细]
  • 在使用mybatis进行mapper.xml测试的时候发生必须为元素类型“mapper”声明属性“namespace”的错误项目目录结构UserMapper和UserMappe ... [详细]
  • Kubernetes 实践指南:初次体验
    本文介绍了如何通过官方提供的简易示例,快速上手 Kubernetes (K8S),并深入理解其核心概念和操作流程。 ... [详细]
  • 前端技术分享——利用Canvas绘制鼠标轨迹
    作为一名前端开发者,我已经积累了Vue、React、正则表达式、算法以及小程序等方面的技能,但Canvas一直是我的盲区。因此,我在2018年为自己设定了一个新的学习目标:掌握Canvas,特别是如何使用它来创建CSS3难以实现的动态效果。 ... [详细]
  • 本文探讨了如何选择一个合适的序列化版本ID(serialVersionUID),包括使用生成器还是简单的整数,以及在不同情况下应如何处理序列化版本ID。 ... [详细]
  • C/C++ 应用程序的安装与卸载解决方案
    本文介绍了如何使用Inno Setup来创建C/C++应用程序的安装程序,包括自动检测并安装所需的运行库,确保应用能够顺利安装和卸载。 ... [详细]
author-avatar
L的日记727248401
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有