我正在使用一台服务器作为另一台服务器前面的Web服务和UI前端。两台服务器都是集群的。 UI的一个功能是用户使用的任务。这些任务在后端服务器上的activemq上排队,并通过前端服务器获取项目。我想构建一个简单的内存中队列,以便我可以尽快将这些项目提供给UI。我想避免必须配置另一个activemq服务器。我目前的方法是使用Infinispan来分配队列,但这种效率很低。使用已经包含在JBoss中的东西有更好的方法吗?
答案 0 :(得分:2)
你可以使用标准的JMS,它将覆盖JBoss EAP 6中内置的HornetQ。默认情况下,它会在内存中使用infinispan。
这里有一篇很好的文章,用于在AS 7中设置群集队列(EAP 6应该是相同的): http://blog.akquinet.de/2012/11/24/clustering-of-the-messaging-subsystem-hornetq-in-jboss-as7-and-eap-6/
为了监控队列中的项目数,您可以使用JMX:
<subsystem xmlns="urn:jboss:domain:messaging:1.4">
<hornetq-server>
<clustered>true</clustered>
<jmx-management-enabled>true</jmx-management-enabled>
<!-- rest of config here -->
</hornetq-server>
</subsystem>
启用JMX后,您可以使用HornetQ特定代码来查看队列长度。这个问题给出了一个例子:How to find a horneq Queue length
同样可能值得注意的是:JBoss EAP 7将从HornetQ切换到ActiveMQ。