2014-11-24 73 views
1

我試圖使用Spring AMQP的RabbitTemplate將Blocked Listeners實現爲RabbitMQ。在我的代碼中,我使用了Spring-amqp 1.1.3版本的jar文件,而我也查看了1.3.1版本,並且這個版本也不支持。有誰知道我是否缺少支持在RabbitMQ中註冊阻塞偵聽器到新連接的任何版本。或者,如果有任何未來版本的spring amqp支持這個功能。Spring AMQP:將BlockedListener註冊爲連接

例如代碼:

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

回答

4

這不是當前可用的開箱;請隨時打開Improvement JIRA Issue

但是,您可以添加一個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) { 

    } 

}); 

即使當您添加監聽器的連接已經建立它就會被調用。

+0

我已經添加了這個來獲取被阻止的連接通知,並且它的工作是否有任何方法可以找到由於RabbitMQ重新啓動而導致的RabbitMQ連接關閉@Gary Russell – Vigneshwaran 2017-12-06 13:51:49

+0

您不應該在評論中提出新問題;總是問一個新問題。目前還不清楚你在問什麼。有一個'onClose'方法。在2.0中,當連接被強制關閉時,還有一個'onShutDown'。 – 2017-12-06 16:38:15