2016-05-23 6 views
0

Ich habe mehrere Spring-Integration-Elemente in der XML-Datei konfiguriert (siehe unten) Vom amqp Channel Adapter werden die Nachrichten an den Router integrationSecondaryRouter geleitet, der die Implementierung integrationRouterImpl hat.Wie erzwinge Rabbit MQ, um Nachrichten zu sammeln und wieder zu senden?

Wenn in integrationRouterImpl ein Ausnahmefehler auftritt, erwarte ich, dass der Rabbit MQ die Nachricht immer wieder sendet. Dies geschieht jedoch nicht. Der Rabbit MQ-Monitor zeigt keine Nachrichtenanhäufung an. Ein Fehler in meiner Konfiguration?

<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" 
/> 

Antwort

2

Schauen Sie, haben Sie error-channel="errorChannel" und die Documentation über die Angelegenheit betont:

Der Standard "errorChannel" a PublishSubscribeChannel ist.

Ja, es gibt einen Teilnehmer. aber es ist nur _org.springframework.integration.errorLogger.

Da es niemanden gibt, der Ihre Ausnahme erneut an die SimpleMessageListenerContainer sendet, gibt es keinen Grund zur nack Nachricht und wiederholen Sie es erneut.

Verwandte Themen