如何通过@JmsListener仅更改一种方法的默认并发?我已将并发添加到@JmsListener(如下所示),但“JBoss管理控制台运行时JMS队列指标”中没有任何更改。我有JBoss 6.4,Spring JMS版本4.3.1。发布。
我的听众:
@JmsListener(containerFactory = "myJmsQueueListenerContainerFactory", destination = "some.destination", concurrency = "3-10")
@SendTo("some.place")
public TransactionBookingStatus bookTransaction(Message message) throws JMSException {
//my implementation
}
我的默认配置:
@Bean
public JndiObjectFactoryBean jmsConnectionFactoryFactoryBean() {
JndiObjectFactoryBean factory = new JndiObjectFactoryBean();
factory.setJndiName("java:/ConnectionFactory");
return factory;
}
public ConnectionFactory jmsConnectionFactory() {
return (ConnectionFactory) jmsConnectionFactoryFactoryBean().getObject();
}
@Bean
public JmsTemplate testMessageTemplate() {
JmsTemplate tmpl = new JmsTemplate();
tmpl.setConnectionFactory(jmsConnectionFactory());
return tmpl;
}
@Bean
public DefaultJmsListenerContainerFactory myJmsQueueListenerContainerFactory() {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(jmsConnectionFactory());
factory.setConcurrency("3-40");
factory.setErrorHandler(new TrnJmsErrorHandler());
return factory;
}
您所拥有的应该可以工作-打开org的调试日志记录。springframework。jms,您将看到关于消费者管理的消息-确保在日志配置中包括线程,您将看到3个消费者线程。
编辑
@SpringBootApplication
public class So40908517Application {
public static void main(String[] args) throws Exception {
ConfigurableApplicationContext context = SpringApplication.run(So40908517Application.class, args);
JmsTemplate template = context.getBean(JmsTemplate.class);
for (int i = 0; i < 3; i++) {
template.convertAndSend("foo", "bar");
}
context.getBean(CountDownLatch.class).await();
context.close();
}
@Bean
public CountDownLatch latch() {
return new CountDownLatch(3);
}
@JmsListener(destination = "foo", concurrency = "3-40")
public void listen(String in) {
System.out.println(in + " received on " + Thread.currentThread().getName());
latch().countDown();
}
}
结果(预期3个线程):
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.4.2.RELEASE)
bar received on DefaultMessageListenerContainer-3
bar received on DefaultMessageListenerContainer-2
bar received on DefaultMessageListenerContainer-1
问题内容: 我必须在testng中编写以下单元测试用例: saveProductTest如果产品详细信息成功保存在数据库中,则将返回productId。 ModifyProductTest,它应该使用以前保存的productId作为参数。 我正在使用testNg数据提供程序从XML文件中获取saveProductTest的产品详细信息输入(PrdouctName,ReleaseDate)和Modi
为什么能起作用?请给我解释一下为什么和怎么做!
简介 这部分我们将回到"回调"这个主题.我们将介绍另外一种写回调函数的方法,即在Twisted中使用 generators. 我们将演示如何使用这种方法并且与使用"纯" Deferreds 进行对比. 最后, 我们将使用这种技术重写诗歌客户端. 但首先我们来回顾一下 generators 的工作原理,以便弄清楚它为何是创建回调的候选方法. 简要回顾生成器 你可能知道, 一个Python生成器是一个
我试图实现一个服务器发送的事件控制器,用最新的数据更新我的Web浏览器客户端。 这是我当前的控制器,每5秒发送一次我的数据列表。我想在每次将数据保存在其他服务中时发送 SSE。我阅读了有关使用通道的信息,但是如何将其与 Flux 一起使用?
问题内容: 用户可以通过文本框中的邮政编码(例如:L14,L15,L16)或位置进行搜索。 如果用户键入“ Liverpool”,它将找到位于“ Liverpool”的所有商店。如果用户输入邮政编码(例如:L15),它将搜索所有在L15邮政编码区域中交货的商店。 请参阅下表: -- SQL查询: -- 结果-按位置(利物浦): 结果-按邮政编码(L12): 它似乎工作正常…是否还有其他方法可以缩短
-在if语句中输入图像描述错误