【问题标题】:Spring Integration <inbound-channel-adapter> Rabbit MQ getting disconnectedSpring Integration <inbound-channel-adapter> Rabbit MQ 断开连接
【发布时间】:2013-07-21 17:37:36
【问题描述】:

我们正在开发一个使用 Spring 集成和 Rabbit MQ 的 POC。 我们有两个模块生产者模块和消费者模块都在不同的 JVM 中运行。 Producer 模块在新文件到达后立即侦听文件夹(输入文件夹),创建一条消息然后推送到(incoming.q.in)队列并移动到进程文件夹。

Consumer 模块然后从incoming.q.in 队列中提取消息,然后处理它们移动到完整文件夹的文件。

生产者和消费者代码都工作正常,但在一些理想的项目之后,消费者模块与 Rabbit MQ 断开连接。我们在incoming.q.in 队列中看到消息,但消费者没有处理。

当我登录 Rabbit MQ 管理工具“incoming.q.in”时,消费者列表为空,消息为“......没有消费者......”。
消费者代码

<int-amqp:inbound-channel-adapter channel="inBoundfile" queue-names="incoming.q.in" connection-factory="connectionFactory"
    error-channel="error.in">
</int-amqp:inbound-channel-adapter>
<int:header-enricher input-channel="inBoundfile" output-channel="serviceInbound">
    <int:header name="FILEID" expression="payload.fileID" />
</int:header-enricher>
<int:service-activator ref="routerService" method="processFile" input-channel="serviceInbound" output-channel="fileHandler.router.in" />
....

感谢您的帮助。

【问题讨论】:

    标签: spring integration rabbitmq spring-integration


    【解决方案1】:

    在消费者端开启DEBUG日志;如果/当连接丢失时,您会看到大量的日志记录和重新连接尝试。

    【讨论】:

    • 加里 ..感谢您的建议。目前我有 11 条消息在队列中。消费者正在运行,但在 Rabbit MQ 控制台中,消费者列表为空。我有很多下面的消息。 ..... ..... [07/22/13 07:06:56:056 EDT] [SimpleAsyncTaskExecutor-1] 调试 org.springframework.amqp.rabbit.listener.BlockingQueueConsumer 为消费者检索交付:tag=[ amq.ctag-Qc6H2e-XJOspKRmYdoEcwU], channel=Cached Rabbit Channel: AMQChannel(amqp://guest@10.106.230.151:80/,1), acknowledgeMode=AUTO 本地队列大小=0 ..... .
    • 环境是基于集群的环境,多个 Rabbit MQ 服务器运行。我正在使用负载平衡 URL 访问。
    • 您在使用 HA 队列吗?您是否查看过其他经纪人的联系?
    • 是的,我们正在使用 HA 队列。在所有节点上,该队列的消费者列表为空。连接处于运行状态。
    • 这没有意义 - 如果您看到很多 retrieving 消息,那么一切正常;如果没有消费者,您将看不到这些消息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多