Я работаю над сервером, который действует как веб-служба и интерфейс пользовательского интерфейса перед другим сервером. Оба сервера кластеризованы. Одной из особенностей пользовательского интерфейса являются задачи, над которыми работают пользователи. Эти задачи ставятся в очередь на activemq на внутреннем сервере, а элементы извлекаются через внешний сервер. Я хочу создать простую очередь в памяти, чтобы я мог как можно быстрее передавать эти элементы в пользовательский интерфейс. Я хочу избежать настройки другого сервера activemq. Мой текущий подход состоит в том, чтобы просто распределить очередь с помощью Infinispan, но это кажется неэффективным. Есть ли лучший способ использовать что-то, уже включенное в JBoss?
Простая распределенная очередь в кластере jboss?
Ответы (1)
Вы можете просто использовать стандартный JMS, и он будет использовать HornetQ, встроенный в JBoss EAP 6. По умолчанию он будет использовать 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, чтобы увидеть длину очереди. Этот вопрос дает пример этого: Как найти длину очереди horneq
Также стоит отметить: JBoss EAP 7 собирается переключиться с HornetQ на ActiveMQ.
person
teacurran
schedule
08.08.2015
и что будет реплицироваться по всему кластеру? Еще одна причина, по которой я избегал JMS, заключается в том, что я хочу знать размер очереди, чтобы знать, когда ее пополнять.
- person Jeffrey Poore; 09.08.2015