首页 > 解决方案 > 未收到 RabbitMQ 阻塞连接通知

问题描述

我正在尝试BlockedListener在 AMQP 上注册一个CachingConnectionFactory以处理连接进入/离开阻塞状态的通知。不幸的是,我从来没有收到任何事件。

在我的 Java 客户端中,我正在使用:

我的 Rabbit 服务器正在使用rabbitmq:3-management映射到3.8.2Erlang 22.2.4

这是我用来连接rabbit和注册监听器的代码片段。

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);

我错过了什么?

标签: javarabbitmqamqpspring-amqp

解决方案


事实证明;但是,上面的代码/设置是正确的;在您尝试在该连接上发布消息之前,Rabbit 不会发送事件。


推荐阅读