如何使用 ConnectionListner 和/或 ChannelListner 记录 RabbitMQ 中消息传递的失败/成功

问题描述

我正在尝试记录在 RabbitMQ 中发送消息期间发生的任何信息或异常,为此我尝试在现有连接工厂中添加 ConnectionListener。

    kRabbitTemplate.getConnectionFactory().addConnectionListener(new ConnectionListener() {

        @Override
        public void onCreate(Connection connection) {
            System.out.println("Connection Created");
        }

        @Override
        public void onShutDown(ShutdownSignalException signal) {
            System.out.println("Connection Shutdown "+signal.getMessage());
        }

    });
    kRabbitTemplate.convertAndSend(exchange,routingkey,empDTO);       
    

为了测试异常场景,我从RabbitMQ控制台解绑甚至删除了队列。但我没有收到任何异常或任何关闭方法调用。

虽然,当我停止 RabbitMQ 服务时,我得到了

Exception in thread "Thread-5" org.springframework.amqp.AmqpConnectException: java.net.ConnectException: Connection refused: connect

但是这个异常不是来自我添加的监听器。

我想知道

  1. 为什么我没有从关闭方法中得到任何异常或调用
  2. 如何使用 ConnectionListner 和/或 ChannelListner 来记录消息传递的失败/成功。
  3. 我们可以使用 AMQP 附加程序吗?如果可以,我们该怎么做? (任何示例/教程)
  4. 确保消息发送的其他方法是什么?

注意:我不想使用发布者确认的方法。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)