RabbitMQ com.rabbitmq.client.AlreadyClosedException:由于连接错误,连接已经关闭

时间:2016-02-23 10:45:10

标签: java rabbitmq

我使用rabbitmq作为代理,在我的不同应用程序之间发送请求和响应。虽然我面临着来自rabbitmq的奇怪行为。它在处理2500到3000条记录后给了我这个例外。

  

com.rabbitmq.client.AlreadyClosedException:连接已经存在   由于连接错误而关闭;原因:java.net.SocketException:   连接重置为   com.rabbitmq.client.impl.AMQChannel.ensureIsOpen(AMQChannel.java:195)   〜[amqp-client-3.5.6.jar:na] at   com.rabbitmq.client.impl.AMQChannel.transmit(AMQChannel.java:309)   〜[AMQP的客户端 - 3.5.6.jar:NA]

当我尝试在消息之间以 2秒延迟运行客户端时,还有一件事,这个问题确实发生了。这是我试图发布消息的代码。

     try {
          byte[] e = jsonMessage.getBytes(RabbitConf.COMMUNICATION_ENCODING);
          this.channel.basicPublish(exchangeType.name(), rountingKey.name(), (BasicProperties)null, e);
      } catch (IOException var6) {
          this.LOG.error("IOException when sending data to rabbit:", var6);
       }

我正在为我的客户端使用amqp-client 3.6.0。 欢迎提出任何建议。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用qos值(尽管文档中不清楚这是否会对发布方面产生影响):

this.channel.basicQos(1);

请参阅:http://www.rabbitmq.com/releases/rabbitmq-java-client/current-javadoc/com/rabbitmq/client/Channel.html#basicQos-int-