【发布时间】:2013-04-16 02:34:44
【问题描述】:
我正在做一个项目,我们有一个高吞吐量的 jms 消息生产(顺便说一下,还有消费者)。 一些测试让我相信我不能在最好的情况下正确使用 JMS 消息生成。 首先让我解释一下场景: 我们有一个带有 13 个队列的 Weblogic 集群(2 个节点)。消息在 UDP 侦听器 (Netty) 上接收,并创建一个位于第一个队列上的 ByteMessage,依此类推。 通过一些分析,我发现这第一步不需要很长时间来执行,而且它的消费者也没有,但是消息仍然在队列中停留了很长一段时间。 它们是非持久性的,交付时间为 0(零)。 一个改进是缓存 de connectionFactory、ConnectionQueue、Queue 和 QueueSession 并像永远一样使用它们。但这不可能。我的意思是,我们不应该打开这些资源,也永远不要关闭它们,对吧?什么应该被缓存,什么时候应该释放连接和会话?我应该为要发送的每条消息创建一个会话还是可以重复使用它? 我的意思是,考虑到正确的资源处理,在队列上生成大量 jms 消息(每秒 300 条左右)的最佳方法是什么? 我被困在这里,我发现的所有来源都告诉我在工作完成时总是关闭但它从未完成(它总是会收到大量消息)。
提前问候。
编辑:我忘了说 MDB 有默认的 16 个消费者大小,理论上考虑单个消息所花费的处理时间,应该足以消费所有消息而无需“储存”它们。
【问题讨论】:
标签: java jms weblogic java-ee-5 producer