繁体   English   中英

多线程JMS在Spring中接收

[英]Multithreaded JMS receiving in Spring

我正在尝试从队列中编写用于JMS消息处理的多线程实现。

我尝试过使用DefaultMessageListenerContainer和SimpleMessageListenerContainer类。

我遇到的问题是,无论我如何配置它,似乎只是一个MessageListener类的实例被实例化。 这迫使我不必要地编写无状态或线程安全的MessageListener实现,因为我将ListenerContainer配置为使用多个线程(concurrentConsumers = 8)。

有一个明显的解决方案,我忽略了吗?

这是设计的。 MessageListener是一个你注入Spring的依赖项 - 它没有办法实例化新的。

这迫使我不必要地编写无状态或线程安全的messageListener实现

你觉得这听起来很糟糕。 制作MessageListener是一个非常好的主意,Spring只是消除了做其他事情的诱惑。

也许这个答案为时已晚,但它可能会让那些正在寻找它的人受益。 简而言之,答案是使用CommonsPoolTargetSourceProxyFactoryBean

有关详细信息,请查看此链接: http//forum.springsource.org/showthread.php?34595-MDB-vs-MDP-concurrency

如果您想为主题做类似的事情,请查看: https//stackoverflow.com/a/12668538/266103

配置“concurrentConsumers”就足以同时处理消息。 这并不意味着您将拥有MessageListenerContainer的“n”个实例。 MessageListenerContainer可以在内部跨越“任务”来处理消息。 (可选)您可能必须相应地配置日志记录,以查看与基础任务/线程关联的信息。

有关更多详细信息,请参阅“ 在Spring中调整JMS消息消耗 ”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM