Не получает уведомления о заблокированном соединении RabbitMQ - PullRequest
2 голосов
/ 08 апреля 2020

Я пытаюсь зарегистрировать BlockedListener на AMQP CachingConnectionFactory для обработки уведомлений о соединениях, входящих / выходящих из заблокированного состояния. К сожалению, я никогда не получаю никаких событий.

В моем клиенте Java я использую:

  • org.springframework.amqp:spring-rabbit:jar:2.1.11.RELEASE
  • com.rabbitmq:amqp-client:jar:5.4.3

Мой сервер Rabbit использует docker изображение rabbitmq:3-management, которое сопоставляется с 3.8.2 и Erlang 22.2.4

Это фрагмент кода, который я использую для подключения к кролику и регистрации слушатель.

com.rabbitmq.client.ConnectionFactory rmqConnectionFactory = new com.rabbitmq.client.ConnectionFactory();
rmqConnectionFactory.useNio();
rmqConnectionFactory.setHost(rabbitmqHost);
rmqConnectionFactory.setUsername(rabbitmqUsername);
rmqConnectionFactory.setPassword(rabbitmqPassword);
rmqConnectionFactory.setPort(rabbitmqPort);
rmqConnectionFactory.setVirtualHost(rabbitmqVirtualHost);

CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory(rmqConnectionFactory);
cachingConnectionFactory.addConnectionListener(new ConnectionListener() {
  @Override
  public void onCreate(Connection connection) {
    log.info("New connection: {}", connection);
    connection.getDelegate().addBlockedListener(new BlockedListener() {
      @Override
      public void handleBlocked(String s) {
        log.warn("Connection {} entered a blocked state with message {}", connection, s);
      }
      @Override
      public void handleUnblocked() {
        log.info("Connection {} left a blocked state", connection);
      }
    });
  }
});

Я получаю записи журнала от

log.info("New connection: {}", connection);

Но не от

log.warn("Connection {} entered a blocked state with message {}", connection, s);

или

log.info("Connection {} left a blocked state", connection);

Что такое Я пропал?

Ответы [ 2 ]

1 голос
/ 08 апреля 2020

Так и получается; вышеуказанный код / ​​настройка правильный однако; Кролик не отправляет событие, пока вы не попытаетесь опубликовать sh сообщение об этом соединении.

0 голосов
/ 08 апреля 2020

Я использую RabbitMQ server 3.7 в docker, но я вижу, что мой rabbitmq_amqp1_0 не включен. Документация гласит:

Мы ввели расширение протокола AMQP 0-9-1, в котором брокер отправляет клиенту метод connection.blocked, когда соединение блокируется, и connection.unblocked, когда он разблокирован.

Возможно, вы устанавливаете плагин rabbitmq_amqp0_9? Я думаю, что протоколы 1_0 и 0_9 разные.

root@ffb673602565:/# rabbitmq-plugins list
Listing plugins with pattern ".*" ...
 Configured: E = explicitly enabled; e = implicitly enabled
 | Status: * = running on rabbit@ffb673602565
 |/
[  ] rabbitmq_amqp1_0                  3.7.11
[  ] rabbitmq_auth_backend_cache       3.7.11
[  ] rabbitmq_auth_backend_http        3.7.11
[  ] rabbitmq_auth_backend_ldap        3.7.11
[  ] rabbitmq_auth_mechanism_ssl       3.7.11
[  ] rabbitmq_consistent_hash_exchange 3.7.11
[  ] rabbitmq_event_exchange           3.7.11
[  ] rabbitmq_federation               3.7.11
[  ] rabbitmq_federation_management    3.7.11
[  ] rabbitmq_jms_topic_exchange       3.7.11
[E*] rabbitmq_management               3.7.11
[e*] rabbitmq_management_agent         3.7.11
[  ] rabbitmq_mqtt                     3.7.11
[  ] rabbitmq_peer_discovery_aws       3.7.11
[  ] rabbitmq_peer_discovery_common    3.7.11
[  ] rabbitmq_peer_discovery_consul    3.7.11
[  ] rabbitmq_peer_discovery_etcd      3.7.11
[  ] rabbitmq_peer_discovery_k8s       3.7.11
[  ] rabbitmq_random_exchange          3.7.11
[  ] rabbitmq_recent_history_exchange  3.7.11
[  ] rabbitmq_sharding                 3.7.11
[  ] rabbitmq_shovel                   3.7.11
[  ] rabbitmq_shovel_management        3.7.11
[  ] rabbitmq_stomp                    3.7.11
[  ] rabbitmq_top                      3.7.11
[  ] rabbitmq_tracing                  3.7.11
[  ] rabbitmq_trust_store              3.7.11
[e*] rabbitmq_web_dispatch             3.7.11
[  ] rabbitmq_web_mqtt                 3.7.11
[  ] rabbitmq_web_mqtt_examples        3.7.11
[  ] rabbitmq_web_stomp                3.7.11
[  ] rabbitmq_web_stomp_examples       3.7.11
...