JBossMQ配置-jms_消息已填充,不管设置如何。还有MDB线程数

JBossMQ配置-jms_消息已填充,不管设置如何。还有MDB线程数,jboss,jms,jbossmq,Jboss,Jms,Jbossmq,我放弃了JBoss社区论坛——那里永远不会有问题得到回答。所以我在这里试试 我已经编写了一个小测试程序来帮助我诊断在实时环境中看到的一个问题,但是我对JBoss MQ的无数可配置设置感到有点困惑,更困惑的是,它们都没有任何区别 环境是JBoss4.0,4 在实时环境中,从独立Java应用程序到远程计算机上JBoss MQ主题(由MDB提供服务)的JMS连接正在丢失。我没有任何关于它丢失原因的信息(以及异常侦听器的启动) 因此,我使用Java应用程序创建了一个测试环境,该应用程序向远程JBoss上

我放弃了JBoss社区论坛——那里永远不会有问题得到回答。所以我在这里试试

我已经编写了一个小测试程序来帮助我诊断在实时环境中看到的一个问题,但是我对JBoss MQ的无数可配置设置感到有点困惑,更困惑的是,它们都没有任何区别

环境是JBoss4.0,4

在实时环境中,从独立Java应用程序到远程计算机上JBoss MQ主题(由MDB提供服务)的JMS连接正在丢失。我没有任何关于它丢失原因的信息(以及异常侦听器的启动)

因此,我使用Java应用程序创建了一个测试环境,该应用程序向远程JBoss上的主题发送文本消息(包含递增的数字)

MDB代码所做的就是在TextMessage中打印数字

我注意到的第一件事是打印的线程被称为“JMS会话池工作者XX”,其中XX是0到32。 当我再次运行sender应用程序时,XX的值是32到46。第三次运行时,值为46到60。模式总是相同的——在JBoss启动后的第一次运行中使用更多线程,在后续运行中使用14或15个线程

那么,问题1:这种模式有什么解释吗

在发送大约15000条消息的运行期间,jms_messages表在JBoss机器上构建。这意味着JBossMQ跟不上,对吗?我假设内存必须超过mysql-jdbc2-service.xml中MessageCache MBean定义中指定的阈值。但是当我监视JVM内存时,它远没有接近为HighMemoryMark指定的150MB值。我想我误解了MessadeCacheBean的定义:“一旦JVM内存使用达到高内存标记,缓存中的旧消息将开始存储在DataDirectory中”。我认为这意味着当堆使用率达到150MB时,接收到的消息将开始写入jms_消息,但显然我弄错了

问题2:JBoss MQ在什么情况下开始写入jms_消息

<container-pool-conf>
    <MaximumSize>500</MaximumSize>
<container-pool-conf>
还有最后一个问题——下面的容器配置设置是否与我看到的处理消息的线程数有关

<container-pool-conf>
    <MaximumSize>500</MaximumSize>
<container-pool-conf>

500

谢谢。

我很久没有使用JBoss MQ了。。。所以这并不是你(有趣的)问题的真正答案,但可能会有所帮助

如果您使用内置的HSQL数据库作为JBoss MQ的消息存储,则无法处理短时间内发送的15k条消息之类的负载。您需要切换到真实的数据库,除非您想放弃持久性消息存储(据我所知,您可以配置它),这对性能有好处,但有些消息可能会永远丢失

JBossMQ并不是有史以来最好的JMS提供程序。事实上,它几乎不是生产就绪的解决方案,使用它是一个真正的痛苦(没有好的文档、wierd配置、您现在所经历的)。这就是为什么JBoss用户将JBoss 5.X转换为JBoss消息传递(事实上,在商业JBoss 4.X EAP中,而不是GA中,他们总是使用JBoss消息传递)


正确的不是最好的选择-它有很好的文档记录,健壮,可以处理非常大的负载。

我已经很久没有使用JBoss MQ了。。。所以这并不是你(有趣的)问题的真正答案,但可能会有所帮助

如果您使用内置的HSQL数据库作为JBoss MQ的消息存储,则无法处理短时间内发送的15k条消息之类的负载。您需要切换到真实的数据库,除非您想放弃持久性消息存储(据我所知,您可以配置它),这对性能有好处,但有些消息可能会永远丢失

JBossMQ并不是有史以来最好的JMS提供程序。事实上,它几乎不是生产就绪的解决方案,使用它是一个真正的痛苦(没有好的文档、wierd配置、您现在所经历的)。这就是为什么JBoss用户将JBoss 5.X转换为JBoss消息传递(事实上,在商业JBoss 4.X EAP中,而不是GA中,他们总是使用JBoss消息传递)


正确的做法不是最好的选择-它有很好的文档记录,健壮,可以处理非常大的负载。

FYI-JBossMQ和JBoss 4都已经死了好几年了,因此您无法在社区论坛上获得答案。在我看来,升级到JBaseAS7可能是个好主意。FYI——JBasSMQ和JBASE 4都是几年来的死机项目,因此,您无法在社区论坛上得到答案。在我看来,考虑升级到JBaseAS7可能是一个好主意。同时,HORNETQ既用于当前社区,又用于JBASE的商业版本。谢谢Piotr。在一个小型的本土项目中工作时,切换到HornetQ或JBossAS7这样的答案是很好的。但是,当与非常大的跨国客户合作时,像这样的转换需要付出巨大的努力,这不是现实世界中的选择。用于持久存储的数据库是MySQL。此外,HornetQ在当前社区以及JBoss的商业版本中都使用。谢谢Piotr。在一个小型的本土项目中工作时,切换到HornetQ或JBossAS7这样的答案是很好的。但是,当与非常大的跨国客户合作时,像这样的转换需要付出巨大的努力,这不是现实世界中的选择。用于持久存储的数据库是MySQL。