RabbitMQ实现(并发)多线程处理消息

RabbitMQ实现(并发)多线程处理消息
@RabbitListener默认是单线程监听队列(@RabbitListener(queues = {MqConstants.OA_TAB_REFRESH}, concurrency = "10") 也能实现⼗个并发)
缺点 : 单线程处理消息, 当消息队列有多个任务时消费端监听队列每次只消费⼀个消息 , 容易引起消息堆积 , 处理效率慢…透水混凝土做法
解决⽅法 : 多线程处理消息 , 配置mq容器⼯⼚参数 , 增加并发处理量 .
@Configuration
public class RabbitMQConfig {
public static final String QUEUE_INFORM_EMAIL = "queue_inform_email";
// 声明交换机
// 声明队列
// 队列绑定交换机,指定routingKey
...
//并发数量
public static final int DEFAULT_CONCURRENT = 10;
@Bean("customContainerFactory")
public SimpleRabbitListenerContainerFactory containerFactory(SimpleRabbitListenerContainerFactoryConfigurer configurer,
ConnectionFactory connectionFactory) {
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
factory.setConcurrentConsumers(DEFAULT_CONCURRENT);
桶盖
电路板测试台factory.setMaxConcurrentConsumers(DEFAULT_CONCURRENT);
return factory;
}
}
@Component
紫外可见漫反射光谱public class ReceiveHandler {
private static final Logger LOGGER = Logger(ReceiveHandler.class);
// 在@RabbitListener注解中指定容器⼯⼚
@RabbitListener(queues = {RabbitmqConfig.QUEUE_INFORM_EMAIL},
containerFactory = "customContainerFactory")
//@RabbitListener(queues = {MqConstants.OA_TAB_REFRESH}, concurrency = "10") 也能实现⼗个并发
public void send_email(String msg,Message message,Channel channel){
LOGGER.info("receive message is:"+msg);
粉尘气溶胶发生器>第五指令
// work
...
}
}

本文发布于:2024-09-21 19:08:27,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/183336.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:消息   队列   并发
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议