文档章节

ActiveMQ与Spring集成

山山山
 山山山
发布于 2016/04/20 20:06
字数 610
阅读 267
收藏 11
点赞 1
评论 0

参考资料

http://blog.csdn.net/jiuqiyuliang/article/details/48758203 

该博文中有一到四章节对ActiveMQj进行介绍使用适合学习。

参考博文中的源码下载地址http://download.csdn.net/detail/jiuqiyuliang/9141139

思考改进

基于配置实现

第一种配置

<!-- 定义Topic监听器  -->
<jms:listener-container client-id="111" destination-type="topic" container-type="default" connection-factory="connectionFactory" acknowledge="auto">
    <jms:listener subscription="11111" destination="test.topic" ref="topicReceiver"/>
</jms:listener-container>

第二种配置

<!-- 定义Topic监听器 -->
<bean id="receive" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    <property name="connectionFactory" ref="connectionFactory"></property>
    <property name="destinationName" value="test.topic"></property>
    <property name="messageListener" ref="topicReceiver"></property>
    <property name="sessionAcknowledgeMode" value="1"></property>
    <property name="subscriptionDurable" value="true"></property>
    <property name="pubSubDomain" value="true"></property>
    <property name="clientId" value="111"></property>
    <property name="durableSubscriptionName" value="111a"></property>
</bean>

实现监听类为topicReceiver

基于注解实现

<bean id="jmsListenerContainerFactory" class="org.springframework.jms.config.DefaultJmsListenerContainerFactory">
    <property name="connectionFactory" ref="connectionFactory"/>
</bean>

<jms:annotation-driven/>
@Component("springQueueReciverTest")
public class SpringQueueReciverTest extends MessageListenerAdapter {

	@JmsListener(destination = "test.queue", concurrency = "5-10")
	public void onMessagehehe(Message message, Session session) throws JMSException {
		try {
			System.out.println(message);
		} catch (MessageConversionException e) {
			e.printStackTrace();
		}
	}
}

如何持续化订阅模式消息

第一种配置里修改属性

destination-type="durableTopic"

第二种配置里修改属性

<property name="subscriptionDurable" value="true"></property>

完整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-4.1.xsd   
        http://www.springframework.org/schema/context   
        http://www.springframework.org/schema/context/spring-context-4.1.xsd
        http://www.springframework.org/schema/jms
        http://www.springframework.org/schema/jms/spring-jms-4.1.xsd
        http://activemq.apache.org/schema/core
        http://activemq.apache.org/schema/core/activemq-core-5.10.0.xsd">

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

	<bean id="connectionFactory"
		class="org.springframework.jms.connection.CachingConnectionFactory">
		<constructor-arg ref="amqConnectionFactory" />
		<property name="sessionCacheSize" value="100" />
	</bean>
	
	<!-- ====Producer side start====-->
	<!-- 定义JmsTemplate的Queue类型 -->
	<bean id="jmsQueueTemplate" class="org.springframework.jms.core.JmsTemplate">
		<constructor-arg ref="connectionFactory" />
		<!-- 非pub/sub模型(发布/订阅),即队列模式 -->
		<property name="pubSubDomain" value="false" />
		<!-- 持续化 -->
		<property name="deliveryPersistent" value="true" />
	</bean>
	
	<!-- 定义JmsTemplate的Topic类型 -->
	<bean id="jmsTopicTemplate" class="org.springframework.jms.core.JmsTemplate">
		<constructor-arg ref="connectionFactory" />
		<!-- pub/sub模型(发布/订阅) -->
		<property name="pubSubDomain" value="true" />
		<!-- 持续化 -->
		<property name="deliveryPersistent" value="true" />
	</bean>
	<!-- ====Producer side end====-->

	
	<!-- ====Consumer side start====-->
	<!-- 定义Queue监听器  -->
	<jms:listener-container destination-type="queue" container-type="default" connection-factory="connectionFactory" acknowledge="auto">
		<jms:listener destination="test.queue" ref="queueReceiver" concurrency="1-1" />
	</jms:listener-container>
	
	<!-- 定义Topic监听器  -->
	<jms:listener-container client-id="111" destination-type="durableTopic" container-type="default" connection-factory="connectionFactory" acknowledge="auto">
		<jms:listener subscription="111a" destination="test.topic" ref="topicReceiver"/>
	</jms:listener-container>
	
	<!-- 监听器配置方式二
	<bean id="receive" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
	    <property name="connectionFactory" ref="connectionFactory"></property>
	    <property name="destinationName" value="test.topic"></property>
	    <property name="messageListener" ref="topicReceiver"></property>
	    <property name="sessionAcknowledgeMode" value="1"></property>
	    <property name="subscriptionDurable" value="true"></property>
	    <property name="pubSubDomain" value="true"></property>
	    <property name="clientId" value="111"></property>
	    <property name="durableSubscriptionName" value="111a"></property>
  	</bean>
	-->
	<!-- ====Consumer side end==== -->
	
	<!-- 监听&注解支持 -->
	<!--  
	<bean id="jmsListenerContainerFactory" class="org.springframework.jms.config.DefaultJmsListenerContainerFactory">
        <property name="connectionFactory" ref="connectionFactory"/>
    </bean>
    -->
    <!-- 
    <jms:annotation-driven/>
    -->
</beans>


© 著作权归作者所有

共有 人打赏支持
山山山
粉丝 3
博文 17
码字总数 9830
作品 0
海淀
架构师

暂无相关文章

内核线程、轻量级进程、用户线程

线程与进程概念 在现代操作系统中,进程支持多线程。 进程是资源管理的最小单元; 线程是程序执行的最小单元。 即线程作为调度和分配的基本单位,进程作为资源分配的基本单位 一个进程的组成...

117 ⋅ 24分钟前 ⋅ 0

elasticsearch2.4.6升级为elasticsearch-5.5.0的经历

将elasticsearch-5.5.0 中的配置 path.data 指向原来的数据路径 即 path.data: /usr/local/src/elasticsearch-2.4.6/data 注意: elasticsearch-5.5.0 需要将jdk版本升级到1.8...

晨猫 ⋅ 24分钟前 ⋅ 1

lvm讲解 磁盘故障小案例

1

oschina130111 ⋅ 29分钟前 ⋅ 0

那些提升开发人员工作效率的在线工具

本文转载自公众号 Hollis 作为一个Java开发人员,经常要和各种各样的工具打交道,除了我们常用的IDE工具以外,其实还有很多工具是我们在日常开发及学习过程中要经常使用到的。 Hollis偏爱使用...

时刻在奔跑 ⋅ 41分钟前 ⋅ 0

restful风格 实现DELETE PUT请求 的web.xml的配置

import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframe......

泉天下 ⋅ 46分钟前 ⋅ 0

Shell数组

Shell数组 Shell在编程方面比Windows批处理强大很多,无论是在循环、运算。 bash支持一维数组(不支持多维数组),并且没有限定数组的大小。类似与C语言,数组元素的下标由0开始编号。获取数...

蜗牛奔跑 ⋅ 56分钟前 ⋅ 0

nmap为了开发方便 可以做简单的修改

因为nmap扫描是默认使用的是nse脚本,但是在开发的过程中需要修改后缀(主要是因为后缀为lua才能显示高亮,所以这里用一个取巧的办法) nse_main.lua文件中我们找到如下代码 local t, path = cn...

超级大黑猫 ⋅ 今天 ⋅ 0

springmvc获取axios数据为null情况

场景:前端用了vue没有用ajax与后台通信,用了axios,但是在代码运行过程中发现axios传递到后台的值接受到数据为null。 问题原因:此处的问题在与axios返回给后台的数据为json类型的,后台接...

王子城 ⋅ 今天 ⋅ 0

hadoop技术入门学习之发行版选择

经常会看到这样的问题:零基础学习hadoop难不难?有的人回答说:零基础学习hadoop,没有想象的那么难,也没有想象的那么容易。看到这样的答案不免觉得有些尴尬,这个问题算是白问了,因为这个...

左手的倒影 ⋅ 今天 ⋅ 0

806. Number of Lines To Write String - LeetCode

Question 806. Number of Lines To Write String Solution 思路:注意一点,如果a长度为4,当前行已经用了98个单元,要另起一行。 Java实现: public int[] numberOfLines(int[] widths, Str...

yysue ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部