jboss 集群中的简单分布式队列?

Simple distributed queue in a jboss cluster?

我正在一个服务器上工作,该服务器充当 Web 服务和 UI 另一台服务器前面的前端。两台服务器都是集群的。 UI 的功能之一是用户处理的任务。这些任务在后端服务器上的 activemq 上排队,并通过前端服务器获取项目。我想构建一个简单的内存队列,以便我可以尽快将这些项目提供给 UI。我想避免必须配置另一个 activemq 服务器。我目前的做法是只使用 Infinispan 分配队列,但这感觉效率很低。是否有更好的方法使用 JBoss 中已经包含的内容?

您可以只使用标准 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。