我使用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。 欢迎提出任何建议。
答案 0 :(得分:0)
您可以尝试使用qos
值(尽管文档中不清楚这是否会对发布方面产生影响):
this.channel.basicQos(1);