- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我配置了一个测试,首先将“Req”从服务器发送到我的应用程序,然后使用“Rsp”响应服务器。我成功收到请求消息,但在尝试响应时出现以下错误:
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
请参阅下面我的 bean 配置:柑橘-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” channel 上接收数据,然后将字节转换为字符串到 req_transformed channel 上,然后验证该字符串是否等于“Req”。然后,我想发回一个“Rsp”字符串,该字符串被转换为字节,然后放入 rsp_transformed channel 作为回复。
请帮我理解问题出在哪里。请注意,当我用两个 channel 适配器替换 tcp-inbound-gateway 时:
<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% 有效。那么为什么它不能与网关一起使用呢?
最佳答案
您的 tcp-inbound-gateway 使用同步消息传递进行操作。因此,您需要相应地在 Citrus 中使用同步 channel 端点。
<citrus:channel-sync-endpoint id="citrusServiceSyncEndpoint"
channel-name="req_transformed"/>
同步端点将处理将请求/响应 channel 与请求/回复相关联的特殊 header 。所以你的测试看起来像这样:
receive("citrusServiceSyncEndpoint")
.messageType(MessageType.PLAINTEXT)
.payload("Req");
send("citrusServiceSyncEndpoint")
.messageType(MessageType.PLAINTEXT)
.payload("Rsp");
请注意,请求和响应使用相同的同步端点。
关于java - Spring 与 Citrus 集成 : no output-channel or replyChannel header available,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37253040/
我不确定为什么会出现异常 Caused by: org.springframework.messaging.core.DestinationResolutionException: no output
我正在尝试在 SFTP 中删除文件,我正在使用 SftpOutboundGateway,所有功能都正常,文件已在 SFTP 中删除,但在删除时发送异常: MessageHandlingExceptio
我写了一个简单的 spring 集成应用程序,将文件从一个目录移动到另一个目录,它看起来像这样: @Bean @InboundChannelAdapter(value="requestChannel"
我正在使用以下 SI 流程: 得到以下错误: no output-channel or replyChannel header available?borg.springframework.i
我配置了一个测试,首先将“Req”从服务器发送到我的应用程序,然后使用“Rsp”响应服务器。我成功收到请求消息,但在尝试响应时出现以下错误: org.springframework.messaging
我正在尝试使用 TcpOutboundGateway 通过 TCP 与遗留(非 spring)系统通信并处理响应,但我收到以下错误:DestinationResolutionException:没有可
我是一名优秀的程序员,十分优秀!