【问题标题】:How to force Rabbit MQ to accumulate and send messages again?如何强制 Rabbit MQ 再次累积发送消息?
【发布时间】:2016-05-23 22:55:15
【问题描述】:

我在 XML 文件中配置了几个 Spring-Integration 元素(见下文) 从 amqp 通道适配器,消息被定向到具有实现 integrationRouterImpl 的路由器 integrationSecondaryRouter。

如果 integrationRouterImpl 中有未捕获的异常,我希望 Rabbit MQ 会一次又一次地发送消息。但是,这不会发生。 Rabbit MQ 监视器不显示任何消息累积。我的配置有错误?

<int-amqp:inbound-channel-adapter 
    channel="integrationFrontDoorQueueChannel" 
    queue-names="${integration.creation.orders.queue.name}" 
    header-mapper="integrationHeaderMapper"
    connection-factory="connectionFactory" 
    error-channel="errorChannel" 
/>

<int:chain 
        id="integrationFrontDoorQueueChain" 
        input-channel="integrationFrontDoorQueueChannel"
        output-channel="integrationRouterChannel">
    <int:transformer ref="integrationJsonPayloadTransformer" method="transformMessagePayload"/>
    <int:filter ref="integrationNonDigitalCancellationFilter" method="filter"/>
    <int:filter ref="integrationPartnerFilter" method="filter"/>
    <int:filter ref="integrationOrderDtoDgcAndGoSelectFilter" method="filter"/>

</int:chain>

 <int:header-value-router 
    id="integrationPrimaryRouter"
    input-channel="integrationRouterChannel" 
    default-output-channel="integrationFrontDoorRouterChannel"
    resolution-required="false"
    header-name="#{T(com.smartdestinations.constants.SdiConstants).INTEGRATION_PAYLOAD_ACTION_HEADER_KEY}">
    <int:mapping 
        value="#{T(com.smartdestinations.service.integration.dto.IntegrationAction).EXCLUSION_SCAN.name()}" 
        channel="integrationExclusionChannel" 
    />
</int:header-value-router>


<int:router 
        id="integrationSecondaryRouter"
        ref="integrationRouterImpl" 
        input-channel="integrationFrontDoorRouterChannel"
        method="route" 
        resolution-required="false" 
        default-output-channel="nullChannel"
/>

【问题讨论】:

    标签: java spring rabbitmq spring-integration


    【解决方案1】:

    看,你有error-channel="errorChannel"Documentation就此事指出:

    默认的“errorChannel”是一个 PublishSubscribeChannel。

    是的,有一个订阅者。但它只是_org.springframework.integration.errorLogger

    由于没有人将您的异常重新抛出到SimpleMessageListenerContainer,因此没有理由将nack 消息重新发送。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-30
      • 2023-01-31
      • 1970-01-01
      • 2020-06-24
      • 2018-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多