当前位置:首页 > 开发 > 编程语言 > 消息中间件 > 正文

JAVA多线程监听JMS、MQ队列

发表于: 2015-03-25   作者:510888780   来源:转载   浏览:
摘要: 背景:消息队列中有非常多的消息需要处理,并且监听器onMessage()方法中的业务逻辑也相对比较复杂,为了加快队列消息的读取、处理速度。可以通过加快读取速度和加快处理速度来考虑。因此从这两个方面都使用多线程来处理。对于消息处理的业务处理逻辑用线程池来做。对于加快消息监听读取速度可以使用1.使用多个监听器监听一个队列;2.使用一个监听器开启多线程监听。 对于上面提到的方法2使用一个监听器开启多线
背景:消息队列中有非常多的消息需要处理,并且监听器onMessage()方法中的业务逻辑也相对比较复杂,为了加快队列消息的读取、处理速度。可以通过加快读取速度和加快处理速度来考虑。因此从这两个方面都使用多线程来处理。对于消息处理的业务处理逻辑用线程池来做。对于加快消息监听读取速度可以使用1.使用多个监听器监听一个队列;2.使用一个监听器开启多线程监听。
对于上面提到的方法2使用一个监听器开启多线程监听,借助spring自带的DefaultMessageListenerContainer可以很方便实现这一功能。
	<!-- 使用spring进行配置 监听-->
	<bean id="testListenerContainer1"
		class="org.springframework.jms.listener.DefaultMessageListenerContainer">
		<property name="connectionFactory" ref="connectionFactory"></property>
		<property name="destination" ref="queue2"></property>
		<property name="messageListener" ref="messageReceiver"></property>
		<property name="sessionTransacted" value="false"></property>
		<!-- 设置固定的线程数 -->
		<property name="concurrentConsumers" value="6"></property>
		<!-- 设置动态的线程数 -->
		<property name="concurrency" value="2-9"></property>
		<!-- 设置最大的线程数 -->
		<property name="maxConcurrentConsumers" value="15"></property>
	</bean>

监听器打印输出当前线程:
 public void onMessage(Message message) {
        System.out.println("在onMessage中线程ID是"+Thread.currentThread());

JAVA多线程监听JMS、MQ队列

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
IBM官方配置指南 http://www-01.ibm.com/support/docview.wss?uid=swg24010367 另外可以参考IBM关于
IBM官方配置指南 http://www-01.ibm.com/support/docview.wss?uid=swg24010367 另外可以参考IBM关于
现在,通过前几篇的总结,我们对Java多线程已经有所了解了,但是它们都是一些Java并发程序设计基础
前言: 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的
前言: 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的
IBM MQ是广泛应用的消息中间件,如果实际项目中消息中间件只有IBM MQ,那么可以用IBM MQ提供的包来
MQ的基本概念: 1) 队列管理器 队列管理器是MQ系统中最上层的一个概念,由它为我们提供基于队列的消
在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列。Java提供的线程
本章主要探讨在多线程程序中与集合相关的内容。在多线程程序中,如果使用普通集合往往会造成数据错
一、阻塞队列 阻塞队列与普通队列的区别在于,当队列是空的时,从队列中获取元素的操作将会被阻塞,
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号