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

Muh*_*nan 5 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] 在 com.rabbitmq.client 的连接重置。 impl.AMQChannel.transmit(AMQChannel.java:309) ~[amqp-client-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);
       }
Run Code Online (Sandbox Code Playgroud)

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

Kee*_*ter 0

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

this.channel.basicQos(1);
Run Code Online (Sandbox Code Playgroud)

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