То, что вы видите, - это ожидаемое поведение, поскольку ваша конфигурация не разрешена. Имена очередей должны быть уникальными для всего брокера. Вы не можете иметь одну и ту же очередь, привязанную к нескольким адресам. Вы пытаетесь настроить очередь STATUS_LOG.V01
по обоим адресам STATUS_LOG.V01
& STATUS_LOG.V02
. Когда вы запускаете брокер, вы должны видеть логирование следующим образом:
INFO [org.apache.activemq.artemis.core.server] AMQ221080: Deploying address STATUS_LOG.V01 supporting [ANYCAST]
INFO [org.apache.activemq.artemis.core.server] AMQ221003: Deploying ANYCAST queue STATUS_LOG.V01 on address STATUS_LOG.V01
INFO [org.apache.activemq.artemis.core.server] AMQ221080: Deploying address STATUS_LOG.V02 supporting [MULTICAST]
INFO [org.apache.activemq.artemis.core.server] AMQ221003: Deploying MULTICAST queue STATUS_LOG.V01 on address STATUS_LOG.V02
WARN [org.apache.activemq.artemis.core.server] AMQ229019: Queue STATUS_LOG.V01 already exists on address STATUS_LOG.V01
Обратите внимание на последний WARN
зарегистрирован. Это означает, что очередь STATUS_LOG.V01
нельзя привязать к адресу STATUS_LOG.V02
, поскольку она уже привязана к адресу STATUS_LOG.V01
.
. Что вам действительно нужно сделать, это создать divert
принимать сообщения, отправленные на ваш STATUS_LOG.V02
адрес, и пересылать их на ваш STATUS_LOG.V01
адрес. Используйте это вместо вашей первоначальной конфигурации:
<address name="STATUS_LOG.V01">
<anycast>
<queue name="STATUS_LOG.V01" />
</anycast>
</address>
<address name="STATUS_LOG.V02">
<multicast/>
</address>
<divert name="myDivert">
<address>STATUS_LOG.V02</address>
<forwarding-address>STATUS_LOG.V01</forwarding-address>
<exclusive>true</exclusive>
</divert>
Мне не ясно, хотите ли вы установить exclusive
в true
для вашего варианта использования или нет. Если exclusive
равно true
, то ни один из подписчиков JMS topi c на STATUS_LOG.V02
не получит сообщения, отправленные на STATUS_LOG.V02
. Все сообщения, отправленные на STATUS_LOG.V02
, будут перенаправляться исключительно на STATUS_LOG.V01
. Если exclusive
равно false
, то подписчики JMS topi c на STATUS_LOG.V02
получат сообщения, отправленные на STATUS_LOG.V02
, и сообщения также будут перенаправлены на STATUS_LOG.V01
. Подробнее о дивертерах можно прочитать в документации .