Spring AMQP:将BlockedListener注册到Connection

 朱仔happy 发布于 2022-12-09 19:34

我正在尝试使用Spring AMQP的RabbitTemplate实现RabbitMQ的Blocked Listener.在我的代码中我使用的是Spring-amqp 1.1.3版本的jar文件,而我也查看了1.3.1版本,这个版本也不支持.有没有人知道我是否缺少任何支持在RabbitMQ中向新连接注册阻塞侦听器的版本.或者,如果有任何未来版本的spring amqp支持此功能.

示例代码:

    Connection connection = factory.newConnection();
    connection.addBlockedListener(new BlockedListener() {
     @Override
     public void handleUnblocked() throws IOException {
        System.out.println("Connection is Unblocked");
     }

     @Override
     public void handleBlocked(String arg0) throws IOException {
        System.out.println("Connection Blocked");
     }           



    });
    com.rabbitmq.client.Channel channel = connection.createChannel();    

Gary Russell.. 8

目前尚未开箱即用; 请随时打开改进JIRA问题.

但是,您可以将Spring AMQP添加ConnectionListenerCachingConnectionFactory...

connectionFactory.addConnectionListener(new ConnectionListener() {

    @Override
    public void onCreate(Connection connection) {
        Channel channel = connection.createChannel(false);
        channel.getConnection().addBlockedListener(new BlockedListener() {

            @Override
            public void handleUnblocked() throws IOException {

            }

            @Override
            public void handleBlocked(String reason) throws IOException {

            }
        });
        try {
            channel.close();
        }
        catch (IOException e) {
        }
    }

    @Override
    public void onClose(Connection connection) {

    }

});

即使在添加侦听器时已建立连接,也将调用它.

1 个回答
  • 目前尚未开箱即用; 请随时打开改进JIRA问题.

    但是,您可以将Spring AMQP添加ConnectionListenerCachingConnectionFactory...

    connectionFactory.addConnectionListener(new ConnectionListener() {
    
        @Override
        public void onCreate(Connection connection) {
            Channel channel = connection.createChannel(false);
            channel.getConnection().addBlockedListener(new BlockedListener() {
    
                @Override
                public void handleUnblocked() throws IOException {
    
                }
    
                @Override
                public void handleBlocked(String reason) throws IOException {
    
                }
            });
            try {
                channel.close();
            }
            catch (IOException e) {
            }
        }
    
        @Override
        public void onClose(Connection connection) {
    
        }
    
    });
    

    即使在添加侦听器时已建立连接,也将调用它.

    2022-12-11 02:12 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有