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