java - 每个 JmsListener 的 DefaultMessageListenerContainer
问题描述
正在构建一个需要高性能 JMS 处理的应用程序。它将从队列中读取消息,处理后,相同的消息将发布到另一个队列。
@JmsListener(destination = "queue1", containerFactory = "containerFactory", concurrency = "16-32")
@JmsListener(destination = "queue2", containerFactory = "containerFactoryExt", concurrency = "16-32")
@JmsListener(destination = "queue3", containerFactory = "containerFactory2", concurrency = "16-32")
@JmsListener(destination = "queue4", containerFactory = "containerFactoryExt2", concurrency = "16-32")
这是我创建容器工厂的代码。
@Bean(name = "containerFactory")
public MQConnectionFactory mqConnectionFactory(DefaultJmsListenerContainerFactoryConfigurer configurer) throws NamingException {
//call to createJmsListenerContainerFactory()
}
@Bean(name = "containerFactoryExt")
public MQConnectionFactory mqConnectionFactory(DefaultJmsListenerContainerFactoryConfigurer configurer) throws NamingException {
//call to createJmsListenerContainerFactory()
}
@Bean(name = "containerFactory2")
public MQConnectionFactory mqConnectionFactory(DefaultJmsListenerContainerFactoryConfigurer configurer) throws NamingException {
//call to createJmsListenerContainerFactory()
}
@Bean(name = "containerFactoryExt2")
public MQConnectionFactory mqConnectionFactory(DefaultJmsListenerContainerFactoryConfigurer configurer) throws NamingException {
//call to createJmsListenerContainerFactory()
}
JmsListenerContainerFactory<DefaultMessageListenerContainer> createJmsListenerContainerFactory(
ConnectionFactory cf,DefaultJmsListenerContainerFactoryConfigurer configurer) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
configurer.configure(factory, cf);
factory.setSessionTransacted(true);
factory.setConcurrency("15-50");
factory.setSessionAcknowledgeMode(2);
factory.setBackOff(new FixedBackOff());
return factory;
}
是否建议每个侦听器有单独的容器工厂?还有其他提高性能的建议吗?
解决方案
推荐阅读
- r - 如何使用 ggparliament 获得显示每个政党所需颜色的图形?
- powershell - Powershell Construct Date ForEach 多次返回第一个文件的日期
- php - Laravel 应用程序不保存数据且不显示任何错误
- python-3.x - self 指的是超类而不是子类
- r - 如何删除出现不同 NA 的观察行
- python - 遍历文件夹中的所有 txt 文件时出现 Unicode 解码错误
- javascript - Vue watch 意外调用了两次
- android - 如何使用 getResourceAsStream 修复未找到的资源
- excel - 如何强制excel获得焦点并刷新UI
- angular - 如何在Angular中注册触摸移动事件?