我正在尝试使用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添加ConnectionListener
到CachingConnectionFactory
...
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) { } });
即使在添加侦听器时已建立连接,也将调用它.
目前尚未开箱即用; 请随时打开改进JIRA问题.
但是,您可以将Spring AMQP添加ConnectionListener
到CachingConnectionFactory
...
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) { } });
即使在添加侦听器时已建立连接,也将调用它.