Iveは最初にサーバーからアプリケーションに「Req」を送信し、「Rsp」を使用してサーバーに応答するテストを構成しました。私は正常に要求メッセージを受け取るが、その後の対応しようとすると、次のエラーを取得:CitrusとのSpringインテグレーション:出力チャネルもreplyChannelヘッダもありません
org.springframework.messaging.MessagingException: Dispatcher failed to deliver Message; nested exception is org.springframework.messaging.core.DestinationResolutionException: no output-channel or replyChannel header available
at org.springframework.integration.dispatcher.AbstractDispatcher.wrapExceptionIfNecessary(AbstractDispatcher.java:133)
at org.springframework.integration.dispatcher.AbstractDispatcher.tryOptimizedDispatch(AbstractDispatcher.java:120)
at org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:147)
at org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:120)
at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:77)
at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:442)
at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:392)
at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:115)
at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:45)
at org.springframework.messaging.core.AbstractMessageSendingTemplate.send(AbstractMessageSendingTemplate.java:105)
at org.springframework.integration.handler.AbstractMessageProducingHandler.sendOutput(AbstractMessageProducingHandler.java:231)
at org.springframework.integration.handler.AbstractMessageProducingHandler.produceOutput(AbstractMessageProducingHandler.java:154)
at org.springframework.integration.handler.AbstractMessageProducingHandler.sendOutputs(AbstractMessageProducingHandler.java:102)
at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:105)
at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:127)
at org.springframework.integration.dispatcher.AbstractDispatcher.tryOptimizedDispatch(AbstractDispatcher.java:116)
at org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:147)
at org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:120)
at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:77)
at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:442)
at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:392)
at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:115)
at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:45)
at org.springframework.messaging.core.AbstractMessageSendingTemplate.send(AbstractMessageSendingTemplate.java:105)
at com.consol.citrus.channel.ChannelProducer.send(ChannelProducer.java:66)
at com.consol.citrus.actions.SendMessageAction.doExecute(SendMessageAction.java:103)
at com.consol.citrus.actions.AbstractTestAction.execute(AbstractTestAction.java:42)
at com.consol.citrus.TestCase.executeAction(TestCase.java:211)
... 31 more
Caused by: org.springframework.messaging.core.DestinationResolutionException: no output-channel or replyChannel header available
at org.springframework.integration.handler.AbstractMessageProducingHandler.sendOutput(AbstractMessageProducingHandler.java:226)
at org.springframework.integration.handler.AbstractMessageProducingHandler.produceOutput(AbstractMessageProducingHandler.java:154)
at org.springframework.integration.handler.AbstractMessageProducingHandler.sendOutputs(AbstractMessageProducingHandler.java:102)
at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:105)
at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:127)
at org.springframework.integration.dispatcher.AbstractDispatcher.tryOptimizedDispatch(AbstractDispatcher.java:116)
... 57 more
参照してくださいを以下の私の豆の設定: 柑橘類-config.xmlの
<citrus:channel-endpoint id="citrusServiceReqEndpoint"
channel-name="req_transformed" />
<citrus:channel-endpoint id="citrusServiceRspEndpoint"
channel-name="rsp" />
<int-ip:tcp-connection-factory id="client"
type="client" host="localhost" port="12345" single-use="false"
so-timeout="10000" using-nio="true" deserializer="javaSerializer"
serializer="javaSerializer" />
<bean id="javaSerializer"
class="org.springframework.integration.ip.tcp.serializer.ByteArrayLfSerializer" />
<int:channel id="req" />
<int:channel id="req_transformed">
<int:queue />
</int:channel>
<int:channel id="rsp">
</int:channel>
<int:channel id="rsp_transformed">
</int:channel>
<int:object-to-string-transformer id="incomingTransformer" input-channel="req" output-channel="req_transformed" />
<int:object-to-string-transformer id="outgoingTransformer" input-channel="rsp" output-channel="rsp_transformed" />
<int-ip:tcp-inbound-gateway id="gateway"
connection-factory="client"
request-channel="req"
reply-channel="rsp_transformed"
client-mode="true" />
テストケース:
receive("citrusServiceReqEndpoint").messageType(MessageType.PLAINTEXT).payload("Req");
send("citrusServiceRspEndpoint").payload("Rsp");
receive("citrusServiceReqEndpoint").messageType(MessageType.PLAINTEXT).payload("Req2");
send("citrusServiceRspEndpoint").payload("Rsp2");
基本的に、私の意図は、 "req"チャンネルでデータを受信し、そのバイトをreq_transformedチャンネル上のStringに変換し、Stringが "Req"と等しいことを確認することです。次に、 "Rsp"文字列を送信して、バイトに変換して、rsp_transformedチャネルに返信します。
どこに問題があるのか理解してください。 tcp-inbound-gatewayを2つのチャネルアダプタに置き換えた場合、
<int-ip:tcp-outbound-channel-adapter
id="outboundClient" channel="rsp" connection-factory="client" />
<int-ip:tcp-inbound-channel-adapter
id="inboundClient" channel="req" connection-factory="client" client-mode="true" />
テストケースが100%動作することに注意してください。なぜそれはゲートウェイで動作しないのですか?
それぞれのフレームワークの両方の作者が私の質問に答えて解決する手助けをしてくれます!非常に親切に感謝します:) – mdewit