2017-12-09 3 views
0

Ich versuche, zwei Queue Channels (unterstützt durch JDBC Store) zu verbinden.Verbinden von zwei Warteschlangen-Channels, die von JDBC Store im Frühjahr unterstützt werden. Integration DSL

@Configuration 
public class DemoIntegration { 
    @Bean 
    public IntegrationFlow flow(MessageChannel firstJDBCChannel, 
           MessageChannel secondJDBCChannel) { 
     return IntegrationFlows.from(firstJDBCChannel) 
       .bridge(bridgeHandler -> bridgeHandler.poller(p -> p.fixedDelay(100L))) 
       .handle(secondJDBCChannel) 
       .get(); 
    } 
} 

Ich habe versucht, verschiedene Konstruktionen zwischen diesen beiden Kanäle zu setzen und noch einen Fehler haben, wie:

Verursacht durch: java.lang.IllegalArgumentException: Fand mehrdeutig Parametertyp [Klasse java.lang. Void] für Methode match: [public boolean org.springframework.integration.channel.AbstractPollableChannel.removeInterceptor (org.springframework.messaging.support.ChannelInterceptor), öffentliche org.springframework.messaging.Message org.springframework.integra tion.channel.AbstractPollableChannel.receive (long), public final Leere org.springframework.integration.context.IntegrationObjectSupport.setPrimaryExpression (org.springframework.expression.Expression), public void org.springframework.integration.channel.AbstractMessageChannel .setStatsEnabled (boolean), public void org.springframework.integration.channel.AbstractMessageChannel.setMessageConverter (org.springframework.messaging.converter.MessageConverter), public void org.springframework.integration.channel.AbstractMessageChannel.setDatatypes (java .lang.Class ...), public void org.springframework.integration.channel.AbstractMessageChannel.configureMetrics (org.springframework.inte gration.support.management.AbstractMessageChannelMetrics), public void org.springframework.integration.context.IntegrationObjectSupport.setComponentName (java.lang.String), öffentlichen org.springframework.messaging.support.ChannelInterceptor org.springframework.integration. channel.AbstractPollableChannel.removeInterceptor (int), public void org.springframework.integration.context.IntegrationObjectSupport.setMessageBuilderFactory (org.springframework.integration.support.MessageBuilderFactory), öffentliche java.util.List> org.springframework.integration .channel.QueueChannel.purge (org.springframework.integration.core.MessageSelector), public void org.springframework.integration.context.I ntegrationObjectSupport.setApplicationContext (org.springframework.context.ApplicationContext) wirft org.springframework.beans.BeansException, public void org.springframework.integration.context.IntegrationObjectSupport.setBeanFactory (org.springframework.beans.factory.BeanFactory), Öffentlichkeit org.springframework.expression.Expression org.springframework.integration.context.IntegrationObjectSupport.getExpression(), public void org.springframework.integration.channel.AbstractPollableChannel.setInterceptors (java.util.List), public void org .springframework.integration.context.IntegrationObjectSupport.setChannelResolver (org.springframework.messaging.core.DestinationResolver)] unter org.springframework.util.Assert. isNull (Assert.java:155) ~ [federkern 5.0.1.RELEASE.jar: 5.0.1.RELEASE] bei org.springframework.integration.util.MessagingMethodInvokerHelper.findHandlerMethodsForTarget (MessagingMethodInvokerHelper.java:776) ~ [feder-integration-core-5.0.0.RC1.jar: 5.0.0.RC1] um org.springframework.integration.util.MessagingMethodInvokerHelper. (MessagingMethodInvokerHelper.java:379) ~ [Feder-Integration-Kern- 5.0.0.RC1.jar: 5.0.0.RC1] um org.springframework.integration.util.MessagingMethodInvokerHelper (MessagingMethodInvokerHelper.java: 225) ~ [feder-integration-core-5.0.0.RC1.jar: 5.0.0.RC1] um org.springframework.integration.util.MessagingMethodInvokerHelper. (MessagingMethodInvokerHelper.java:220) ~ [Feder -integration-core-5.0.0.RC1.jar: 5.0.0.RC1] unter org.springframework.integration.handler.MethodInvokingMessageProcessor. (MethodInvokingMessageProcessor.java:60) ~ [spring-integration-core-5.0.0 .RC1.jar: 5.0.0.RC1] unter org.springframework.integration.handler.ServiceActivatingHandler. (ServiceActivatingHandler.java:38) ~ [feder-integration-core-5.0.0.RC1.jar: 5.0.0 .RC1] unter org.springframework.integration.dsl.IntegrationFlowDefinition.handle (IntegrationFlowDefinition.java:924) ~ [feder-integration-core-5.0.0.RC1.jar: 5.0.0.RC1] unter org.springframework.integration.dsl.IntegrationFlowDefinition.handle (IntegrationFlowDefinition.java:904) ~ [federintegration-core-5.0.0.RC1.jar: 5.0.0.RC1] unter org.springframework.integration. dsl.IntegrationFlowDefinition.handle (IntegrationFlowDefinition.java:891) ~ [feder-integration-core-5.0.0.RC1.jar: 5.0.0.RC1] um name.karwowski.blazej.integrationdemo2.DemoIntegration.flow (DemoIntegration .java: 16) ~ [Klassen /: na] bei name.karwowski.blazej.integrationdemo2.DemoIntegration $$ EnhancerBySpringCGLIB $$ f82aadc3.CGLIB $ fließen 0 $() ~ [Klassen /: na] bei name.karwowski .blazej.integrationdemo2.DemoIntegration $$ EnhancerBySpringCGLIB $$ f82aadc3 $$ FastClassBySpringCGLIB $$ ef9b4b0c.invoke() ~ [Klassen /: na] a t org.springframework.cglib.proxy.MethodProxy.invokeSuper (MethodeProxy.java:228) ~ [spring-core-5.0.1.RELEASE.jar: 5.0.1.RELEASE] unter org.springframework.context.annotation .ConfigurationClassEnhancer $ BeanMethodInterceptor.intercept (ConfigurationClassEnhancer.java:361) ~ [spring-context-5.0.1.RELEASE.jar: 5.0.1.RELEASE] um name.karwowski.blazej.integrationdemo2.DemoIntegration $$ EnhancerBySpringCGLIB $$ f82aadc3.flow() ~ [Klassen /: na] bei sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Methode) ~ [na: 1.8.0_151] um sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) ~ [na: 1.8.0_151] um sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessor Impl.java:43) ~ [na: 1.8.0_151] bei java.lang.reflect.Method.invoke (Methode.java:498) ~ [na: 1.8.0_151] um org.springframework.beans.factory .support.SimpleInstantiationStrategy.instantiate (SimpleInstantiationStrategy.java:155) ~ [Feder-Bohnen-5.0.1.RELEASE.jar: 5.0.1.RELEASE] ... 19 gemeinsamer Rahmen weggelassen

Wie richtig zwei (oder mehr) Warteschlangenkanäle verbinden? Ich muss etwas zwischen ihnen machen und der Anwendung erlauben, Nachrichten im Falle des Haltes zu behalten.

Vollprotokoll und Codebeispiel sind auf GitHub: https://github.com/blazejkarwowski/integration-test

Antwort

2

Statt .handle(secondJDBCChannel) Sie .channel(secondJDBCChannel) verwenden. Es gibt nichts zu handhaben - es ist ein Kanal dazwischen.

Weitere Informationen finden Sie unter Reference Manual.

Verwandte Themen