我已经注册了一个AsyncHandler
并且还添加了一个success-channel
到 SQS 出站流。有success-channel
一个int:logging-channel-adapter
端点。但是,我无法看到来自此适配器的任何日志。AsyncHandler
能够接收回叫,但success-channel
. 在SqsMessageHandler
我看到我们在方法中设置了一个输出通道obtainAsyncHandler
,但我没有在success-channel
任何地方看到设置。我错过了什么吗?我更喜欢使用成功和失败通道而不是 AsyncHandler 回调 Impl 以避免在我的类中包含 AWS 特定代码。
另外 my <int-aws:sqs-outbound-channel-adapter>
位于<int:chain>
没有输出通道的 a 内,因为发送消息时流程结束。
编辑 - 添加配置 这是我可以让它记录回调的唯一方法。
<int:channel id="chainChannel" />
<int:channel id="successChannel" />
<bean class="ServiceTransformer" id="serviceTransformer" />
<int:chain input-channel="serviceChannel" id="sendToServiceSqsChain" output-channel="chainChannel">
<int:transformer ref="serviceTransformer" method="transform" />
<int:header-filter header-names="config" />
<int-aws:sqs-outbound-channel-adapter sqs="amazonSQS" queue="some-queue" async-handler="sqsPublishCallbackHandler" success-channel="successChannel"/>
</int:chain>
<int:logging-channel-adapter log-full-message="true" channel="chainChannel" />
在这里,我可以在链(出站通道)和 sqs-outbound(成功通道)中使用相同的通道
无法让它像下面这样工作:
<int:channel id="successChannel" />
<bean class="ServiceTransformer" id="serviceTransformer" />
<int:chain input-channel="serviceChannel" id="sendToServiceSqsChain" >
<int:transformer ref="serviceTransformer" method="transform" />
<int:header-filter header-names="config" />
<int-aws:sqs-outbound-channel-adapter sqs="amazonSQS" queue="some-queue" async-handler="sqsPublishCallbackHandler" success-channel="successChannel"/>
</int:chain>
<int:logging-channel-adapter log-full-message="true" channel="successChannel" />