ActiveMQ - клиент уже подключен с той же ошибкой clientId

У нас есть настройка JBoss EAP 7.0.0.GA для подключения к ActivMQ apache-activemq-5.14.3. Мы пытаемся настроить надежного абонента со следующей конфигурацией:

@MessageDriven(
      name = "TestListener",
      activationConfig = {
        @ActivationConfigProperty(propertyName  = "destinationType",
                                      propertyValue = "javax.jms.Topic"),

        @ActivationConfigProperty(propertyName  = "subscriptionDurability",
                                      propertyValue = "Durable"),

        @ActivationConfigProperty(propertyName  = "subscriptionName",
              propertyValue = "subscriptionNameTest"),

        @ActivationConfigProperty(propertyName  = "clientId",
                                      propertyValue = "2"),

        @ActivationConfigProperty(propertyName  = "destination",
                                      propertyValue = "jms/testTopic")
      }
)
@PermitAll
@ResourceAdapter(value="activemq-rar.rar")

Тем не менее, мы получаем следующее исключение в консоли сервера JBoss

ERROR [org.apache.activemq.ra.ActiveMQEndpointWorker] (default-threads - 4) Failed to connect to broker [tcp://127.0.0.1:61616?jms.rmIdFromConnectionId=true]: Broker: TestBroker    - Client: 2 already connected from tcp://127.0.0.1:64246: javax.jms.InvalidClientIDException: Broker: TestBroker - Client: 2 already connected from tcp://127.0.0.1:64246

В то же время, если мы видим следующие журналы на activmq:

WARN  | Failed to add Connection ID: 40600-51:1 due to javax.jms.InvalidClientIDException: Broker: TestBroker - Client: 2 already connected from tcp://127.0.0.1:64246 | org.apache.activemq.broker.TransportConnection | ActiveMQ Transport: tcp:///127.0.0.1:50170@61616

Ниже приведены параметры ActiveMQManagedConnectionFactory (при попытке установить максимальный размер пула равным 1, но безрезультатно):

/subsystem=resource-adapters/resource-adapter=activemq-rar.rar/connection-definitions=ConnectionFactory:add(class-name="org.apache.activemq.ra.ActiveMQManagedConnectionFactory", jndi-name="java:/MyConnectionFactory", enabled=true, min-pool-size=1, max-pool-size=20, pool-prefill=false, same-rm-override=false, recovery-username=ejb_user, recovery-password=xxxxx)

Обратитесь за помощью к экспертам AMQ, пожалуйста.

2 ответа

Единственный способ заставить AMQ и jboss вести себя без тысячи потоков, которые делают глупости, - это настроить RAR со встроенным брокером, а затем по сети подключить встроенный брокер к внешнему брокеру.

Возможно, изменение вашей собственности / конфигурации решит вашу проблему. Попробуйте, например, изменить свой идентификатор клиента, используя следующую конфигурацию:

@ActivationConfigProperty(propertyName="clientId", propertyValue = "2-${jboss.node.name}")

Это обеспечит уникальность вашего clientId

Другие вопросы по тегам