背景:消息队列中有非常多的消息需要处理,并且监听器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());
分享到:
相关推荐
用三种方法实现从MQ队列接收消息,java代码
java多线程模拟队列实现排队叫号,多线程模拟排队叫号取号 java多线程模拟队列实现排队叫号,多线程模拟排队叫号取号
Java多线程读大文件 java多线程写文件:多线程往队列中写入数据
java多线程加队列上传文件_后台处理
java 多线程 队列工厂
Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式...
java多线程PPT 多线程基本概念 创建线程的方式 线程的挂起与唤醒 多线程问题
详细的讲解了java多线程的原理,并配有代码进行实战,适合java初学者和想对多线程有进一步了解的人。
一个java 多线程操作数据库应用程序!!!
一个线程从A表读数据放入队列 N个线程从队列中取出数据,找到其在子表中的数据 对子表中的数据开3种线程:读,发email,标记状态 N个线程对完成的A表数据做最后处理 支持大数据量跑批,就是个例子,本来是公司发送...
多线程监听代码,不同的线程来监听主线程是否发生变换,如果变换,根据相应的参数调用不同的线程执行相关代码
该文档总结了Java多线程相关的知识点,分享给大家,简单易懂!
java多线程小程序实例 java多线程小程序实例
java多线程并发查询数据库,使用线程池控制分页,并发查询。
java多线程处理数据库数据,使用并发包,无框架,可批量处数据库数据,进行增删改。。等等操作。
java多线程经典案例,线程同步、线程通信、线程阻塞等经典案例
Java 线程系列博文总结word化,编目如下,欢迎互相学习交流: ...Java线程:新特征-阻塞队列 Java线程:新特征-阻塞栈 Java线程:新特征-条件变量 Java线程:新特征-原子量 Java线程:新特征-障碍器
多线程启动.java多线程启动.java多线程启动.java多线程启动.java
java多线程实现大批量数据切分成指定份数的数据,然后多线程处理入库或者导出,线程的个数和每份数据的数量都可以控制