2015-08-08 7 views
1

Я работаю над сервером, который действует как веб-сервис и интерфейс перед другим сервером. Оба сервера кластеризованы. Одной из особенностей пользовательского интерфейса являются задачи, над которыми работают пользователи. Эти задачи помещаются в очередь на activemq на сервере бэкэнда, и элементы извлекаются через внешний интерфейс. Я хочу создать простую очередь в памяти, чтобы я мог как можно быстрее загружать эти элементы в пользовательский интерфейс. Я хочу избежать необходимости настраивать другой сервер activemq. Мой нынешний подход состоит в том, чтобы просто распределить очередь с помощью Infinispan, но это кажется неэффективным. Есть ли лучший способ использовать что-то уже включенное в JBoss?Простая распределенная очередь в кластере jboss?

ответ

2

Вы можете просто использовать стандартную JMS, и он перейдет через HornetQ, встроенный в JBoss EAP 6. По умолчанию он будет использовать бесконечную память.

Существует хорошая статья для создания кластерной очереди в 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.

+0

и что будет реплицироваться через кластер? Еще одна причина, по которой я избегал JMS, заключается в том, что я хочу знать размер очереди, поэтому я знаю, когда ее можно пополнить. –