Я зарегистрировал AsyncHandler
, а также добавил success-channel
в исходящий поток SQS. success-channel
имеет конечную точку int:logging-channel-adapter
. Однако я не могу видеть журналы с этого адаптера. AsyncHandler
может получать обратные вызовы, но ничего на success-channel
. В SqsMessageHandler
я вижу, что мы устанавливаем выходной канал в методе obtainAsyncHandler
, но я нигде не видел установленного success-channel
. Я что-то упускаю? Я бы предпочел использовать каналы успеха и неудачи, а не обратный вызов AsyncHandler Impl, чтобы избежать использования кода, специфичного для AWS, в моих классах.
Также мой <int-aws:sqs-outbound-channel-adapter>
находится внутри <int:chain>
, у которого нет выходного канала, поскольку поток заканчивается, когда сообщение отправлено.
РЕДАКТИРОВАТЬ - добавлена конфигурация. Это единственный способ заставить его регистрировать обратный вызов.
<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" />