Я работаю над сервером, который действует как веб-сервис и интерфейс перед другим сервером. Оба сервера кластеризованы. Одной из особенностей пользовательского интерфейса являются задачи, над которыми работают пользователи. Эти задачи помещаются в очередь на activemq на сервере бэкэнда, и элементы извлекаются через внешний интерфейс. Я хочу создать простую очередь в памяти, чтобы я мог как можно быстрее загружать эти элементы в пользовательский интерфейс. Я хочу избежать необходимости настраивать другой сервер activemq. Мой нынешний подход состоит в том, чтобы просто распределить очередь с помощью Infinispan, но это кажется неэффективным. Есть ли лучший способ использовать что-то уже включенное в JBoss?Простая распределенная очередь в кластере jboss?
1
A
ответ
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.
и что будет реплицироваться через кластер? Еще одна причина, по которой я избегал JMS, заключается в том, что я хочу знать размер очереди, поэтому я знаю, когда ее можно пополнить. –