有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

持有消息的java AMQP使用者(侦听器适配器+SimpleMessageListenerContainer)

最近,我们遇到了这样一种情况:消息被消费者从队列中接收,但没有到达绑定到该队列的侦听器。我们之所以能够做出这个断言,是因为我们的侦听器上有一个没有为这些消息触发的拦截器(它打印日志消息)。当我们重新启动服务器(tomcat)时,消息被消费并确认

我们想知道这种行为的原因。我们分析了线程转储,但没有成功


共 (1) 个答案

  1. # 1 楼答案

    这些问题总是由以下两个问题之一引起:

    • 容器线程“卡在”用户代码中
    • 某些网络组件(如路由器)会静默关闭其认为空闲的连接,这样客户端和/或服务器就不会意识到该连接已关闭

    你似乎已经排除了第一个(假设你的分析是正确的),所以很可能是第二个

    您可以在连接上启用心跳,以避免网络认为连接处于空闲状态。请参阅RabbitMQ文档