【问题标题】:RabbitMQ com.rabbitmq.client.AlreadyClosedException: connection is already closed due to connection errorRabbitMQ com.rabbitmq.client.AlreadyClosedException:由于连接错误,连接已关闭
【发布时间】:2016-02-23 10:45:10
【问题描述】:

我使用 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);
       }

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

【问题讨论】:

  • 检查这是否有帮助 stackoverflow.com/questions/8839094/…
  • 感谢@Rupesh,但是我尝试了这个解决方案,但它也不起作用。
  • 嗨,你找到解决这个问题的方法了吗?我面临与 RabbitMQ 3.6.6 相同的问题
  • 我也面临同样的情况,你找到解决办法了吗?

标签: java rabbitmq


【解决方案1】:

您可以尝试使用 qos 值(尽管从文档中不清楚这是否对 publish 方面有影响):

this.channel.basicQos(1);

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

【讨论】:

    猜你喜欢
    • 2018-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-10
    • 1970-01-01
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多