如何处理RMQ连接丢失?

问题描述

我们在Scala中使用Java RMQ客户端,并且在DEV环境中遇到一些问题。我们设置了这种后备策略:

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)

我以类似的方式添加了通道连接关闭侦听器。

因此,我们使用2种策略(并通过config进行修改

我设置了失败策略退出,有时它可以正常运行。当发生错误 RMQ使用者的终止过程已关闭,并且服务正确重新启动(kubernetes pod已关闭并再次自动启动)时,我在日志上看到此行。我禁用了RMQ自动恢复,因为它根本没有用。

问题是有时有些队列没有使用者,消息正在排队并挂起,但是日志中没有此错误消息。真的很难测试,因为我不知道我们的DEV环境发生了什么情况。

会发生什么? 是否有更好的方法来处理连接丢失问题,或更准确地说,是要处理消费者以某种方式脱离队列的情况?

预先感谢

美国

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)