私はspring-framework
とspring-integration
の最新バージョンを使用していますが、POCアプリケーションをSpring統合で作成していますが、これを実行できません。春の統合:チャンネルにメッセージを送信できません
私はこのようなものを抱えている春の統合があります。
<bean id="initUrlQ" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg value="initUrl.Q" />
</bean>
<int:channel id="initChannelProducerId" />
<jms:outbound-channel-adapter id="initOutboundId" channel="initChannelProducerId" connection-factory="padtoys.jms.cachedConnectionFactory"
destination="initUrlQ" />
<int:channel id="initChannelConsumerId" />
<jms:message-driven-channel-adapter id="initQListenerId" channel="initChannelConsumerId"
connection-factory="padtoys.jms.cachedConnectionFactory" destination="initUrlQ"
acknowledge="auto" concurrent-consumers="1" max-concurrent-consumers="1" />
<int:service-activator method="testSA" ref="testBean" input-channel="initChannelConsumerId" output-channel="nullChannel"/>
そして、私のtestBean
javaファイルはこのように見えます。
public class TestBean implements ApplicationContextAware {
private ApplicationContext applicationContext;
@PostConstruct
public void afterInit(){
System.err.println("after init..!");
DirectChannel inChannel = applicationContext.getBean("initChannelProducerId", DirectChannel.class);
System.err.println("channel::" + inChannel);
inChannel.send(createMessage("This is test url!!", 0));
}
@Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
@ServiceActivator
public String testSA(){
System.err.println("inside service activator!!!");
return "this is test";
}
private Message<String> createMessage(final String url, final int depth) {
return MessageBuilder.withPayload(StringUtils.EMPTY)
.setHeader(MESSAGE_HEADERS.URL, url)
.setHeader(MESSAGE_HEADERS.DEPTH, depth).build();
}
}
そして、私はこのようなアプリケーションを開始しています。
@SuppressWarnings("resource") public static void main(String[] args) {
LOG.info("Trigerring process!");
new ClassPathXmlApplicationContext("/application-context.xml");
}
私は春のコンテキストXMLにtestBean
とpadtoys.jms.cachedConnectionFactory
を宣言したことをご検討ください。
問題:
私はエラーの下になって、アプリケーションを起動し
Caused by: org.springframework.messaging.MessageDeliveryException: Dispatcher has no subscribers for channel 'org[email protected]5a1198c7.initChannelProducerId'.; nested exception is org.springframework.integration.MessageDispatchingException: Dispatcher has no subscribers
at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:77)
at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:423)
at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:373)
at com.dodax.pad.ext.toys.crawler.scanner.TestBean.afterInit(TestBean.java:25)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:366)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:311)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:134)
... 30 more
Caused by: org.springframework.integration.MessageDispatchingException: Dispatcher has no subscribers
at org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:138)
at org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:105)
at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:73)
注:私はこのラインで右チャンネル名を取得しています
、 System.err.println("channel::" + inChannel);
が、メッセージをチャネルに送信しようとすると問題が発生します。
ありがとう@Gary、実際に私はこのポストの後にその答えを参照していたし、それは完璧に働いて、私も投票でその答えをマーク:) –