RabbitMQ Java客户端4.0.0重新连接失败
当我通过rabbitmq管理接口强制断开客户端连接时,它不会重新连接。我正在使用客户端4.0.0。请在下面找到我的代码RabbitMQ Java客户端4.0.0重新连接失败,java,rabbitmq,Java,Rabbitmq,当我通过rabbitmq管理接口强制断开客户端连接时,它不会重新连接。我正在使用客户端4.0.0。请在下面找到我的代码 public void processQueue(){ // Establishing a Connection with RabbitMQ server, // running in the local machine, localhost ConnectionFactory factory = new ConnectionFactory();
public void processQueue(){
// Establishing a Connection with RabbitMQ server,
// running in the local machine, localhost
ConnectionFactory factory = new ConnectionFactory();
Connection connection=null;
try {
factory.setHost("localhost");
factory.setRequestedHeartbeat(5);
factory.setAutomaticRecoveryEnabled(true);
factory.setConnectionTimeout(5000);
factory.setNetworkRecoveryInterval(10000);
connection = factory.newConnection();
// creating a channel with first_queue
Channel channel = connection.createChannel();
channel.queueDeclare("xyz", true, false, false, null);
// creating the Consumer, that will be receive a message and convert to String
Consumer consumer = new DefaultConsumer(channel) {
@Override
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties,
byte[] body) throws IOException {
String message = new String(body, "UTF-8");
System.out.println("Java Queue - Message Received '" + message + "'");
}
};
// loop that waits for message
channel.basicConsume("xyz", true, consumer);
} catch (Exception e) {
System.out.println("server is Down !");
System.out.println(e.getMessage());
try {
if(connection!=null)
connection.close();
} catch (Exception e1) {
e1.printStackTrace();
}
}
}
我有一个简单的消费者程序,无法重新连接。我关注了这篇文章,但也没有帮助。有人能帮我吗?我从rabbitmq用户邮件列表中获得了一些信息。希望这能帮助别人 连接恢复绝不依赖于队列的存在。 上记录了用于恢复的算法 什么是触发连接恢复的事件
- I/O线程中的任何异常(这涉及网络连接问题)
- 跳过对等心跳()
- Server sent connection.close(CLI和管理UI中的连接关闭操作使用)
- 当您使用连接#close()或#abort()有意关闭它时
- 通道异常-通道不是有意恢复的,因为它们的处理完全是特定于应用程序的