Java 如何处理RMQ连接丢失?
我们在Scala中使用JavaRMQ客户端,在开发环境中遇到了一些问题。我们制定了这一应急策略:Java 如何处理RMQ连接丢失?,java,scala,rabbitmq,connection,rmq,Java,Scala,Rabbitmq,Connection,Rmq,我们在Scala中使用JavaRMQ客户端,在开发环境中遇到了一些问题。我们制定了这一应急策略: def addConnectionShutdownListener(connection: Connection): Unit ={ connection.addShutdownListener { cause: ShutdownSignalException => logger.error(s"Error on RMQ connection: ${cause.g
def addConnectionShutdownListener(connection: Connection): Unit ={
connection.addShutdownListener { cause: ShutdownSignalException =>
logger.error(s"Error on RMQ connection: ${cause.getMessage}", cause)
if (exitOnFail) {
logger.info("Terminating process with RMQ consumer is shut down")
System.exit(1)
}
else if (retryOnFail) {
logger.info(s"Retrying to connect")
retryCreatingConnection(1)
}
}
}
addConnectionShutdownListener(rmqConnection)
以类似的方式,我添加了通道连接关闭侦听器
因此,我们使用了两种策略(并通过配置进行修改)
- 失败时退出
- 失败后重试
问题是有时一些队列没有使用者,消息正在排队并挂起,但日志中没有此错误消息。测试它真的很难,因为我不知道在我们的开发环境中发生了什么情况 会发生什么? 有没有更好的方法来处理连接丢失,或者更准确地说,处理消费者以某种方式从队列中分离的情况 提前感谢,
Amer“问题是有时一些队列没有消费者,消息正在排队并挂起,但日志中没有此错误消息”可能根本没有消费者?您是否检查了RMQ监控队列中是否存在某些活动?也许您的devk8s没有正确配置以启动相应的使用者?毕竟,我倾向于这个问题不是在连接/通道处理程序中,而是在其他一些地方。也许您应该向dev rmq添加一些监视,并检测queuesThanks中的活动。这是我们确定的。我只是想看看是否有人面临一些已知的问题。。。