在 RabbitMQ 双向通信(如 RPC 模式)中,如果 A 发送消息到 B,B 返回消息到 A 时出现超时

报错信息

ERROR [pool-2-thread-4] DirectMessageListenerContainer$SimpleConsumer [traceId:] Failed to invoke listener
org.springframework.amqp.rabbit.support.ListenerExecutionFailedException: Listener threw exception
        at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.wrapToListenerExecutionFailedExceptionIfNeeded(AbstractMessageListenerContainer.java:1705)
        at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:1595)
        at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.actualInvokeListener(AbstractMessageListenerContainer.java:1510)
        at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:1498)
        at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:1489)
        at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.executeListener(AbstractMessageListenerContainer.java:1433)
        at org.springframework.amqp.rabbit.listener.DirectMessageListenerContainer$SimpleConsumer.callExecuteListener(DirectMessageListenerContainer.java:1042)
        at org.springframework.amqp.rabbit.listener.DirectMessageListenerContainer$SimpleConsumer.handleDelivery$original$WnKltMoj(DirectMessageListenerContainer.java:1002)
        at org.springframework.amqp.rabbit.listener.DirectMessageListenerContainer$SimpleConsumer.handleDelivery$original$WnKltMoj$accessor$Y9pELdoz(DirectMessageListenerContainer.java)
        at org.springframework.amqp.rabbit.listener.DirectMessageListenerContainer$SimpleConsumer$auxiliary$Lxo6dzxf.call(Unknown Source)
        at org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstMethodsInter.intercept(InstMethodsInter.java:86)
        at org.springframework.amqp.rabbit.listener.DirectMessageListenerContainer$SimpleConsumer.

解决:
增加超时

spring:
  rabbitmq:
    connection-timeout: 5000   # 连接超时
    requested-heartbeat: 60    # 心跳间隔(秒) 
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐