2017-11-11 1 views
1

Ich versuche, meinen Frühling Integration Setup zu testen, aber empfangeFrühling Integration MessageDeliveryException

"MessageDeliveryException: Dispatcher hat keine Abonnenten für Kanal".

Ich benutze einen QueueChannel und ich glaube nicht, dass es einen Handler benötigt (von was ich in den Dokumenten sehen kann).

Ich verwende , um den Integrationsfluss programmgesteuert zu definieren, anstatt einen Kontext zu verwenden.

import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.springframework.integration.channel.QueueChannel; 
import org.springframework.integration.dsl.IntegrationFlows; 
import org.springframework.integration.dsl.channel.MessageChannels; 
import org.springframework.messaging.Message; 
import org.springframework.messaging.MessageChannel; 
import org.springframework.messaging.support.MessageBuilder; 
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 

@RunWith(SpringJUnit4ClassRunner.class) 
public class SimplifiedIntegrationTest { 
    @Test 
    public void simpleTest() { 
     MessageChannel inputChannel = MessageChannels.direct().get(); 
     QueueChannel outputChannel = MessageChannels.queue().get(); 
     IntegrationFlows.from(inputChannel).channel(outputChannel).get(); 

     inputChannel.send(MessageBuilder.withPayload("payload").build()); 

     Message<?> outMessage = outputChannel.receive(0); 
     Assert.notNull(outMessage); 
    } 
} 

Antwort

2

Die IntegrationFlow muss immer im Kontext als Bean registriert werden. Ich bin mir nicht sicher, was die Quelle ist, die Sie anders denken lassen, aber da Sie es nicht als eine Bohne im Zusammenhang registrieren, gibt es keine Flusskonfiguration, die Magie durch das bestimmte BeanPostProcessor getan wird. Und das ist, warum Sie bekommen, dass Fehler „Dispatcher keine Abonnenten für Kanal hat“

IntegrationFlowContext Sehen Sie, wenn Sie Ihre Integration registrieren manuell Flow:.. https://docs.spring.io/spring-integration/docs/5.0.0.BUILD-SNAPSHOT/reference/html/java-dsl.html#java-dsl-runtime-flows

Das doc for Spring Integration ist 5.0, aber IntegrationFlowContext verhält sich auf die gleiche Weise in Java DSL 1.2.x.

Verwandte Themen