首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在spring-integration-aws中使用sqs消息驱动的通道适配器?

如何在spring-integration-aws中使用sqs消息驱动的通道适配器?
EN

Stack Overflow用户
提问于 2017-02-14 21:34:06
回答 1查看 1.2K关注 0票数 3

编辑:下面是显示日志的要点。似乎有ReceiveMessage,然后是inputChannel上的preSend

https://gist.github.com/louisalexander/04e7d95835521efdd15455c98075e2ea

很抱歉,我太笨了,但我似乎想不出如何正确地利用sqs-message-driven-channel-adapter

在我的上下文文件中,我将它配置为:

代码语言:javascript
复制
<int-aws:sqs-message-driven-channel-adapter
    id="my-message-driven-adapter" sqs="sqs" queues="some-queue-of-mine"
    max-number-of-messages="5" visibility-timeout="200" wait-time-out="10"
    send-timeout="2000" channel="inputChannel" />

我注意到消息正在正确地进入some-queue-of-mine (通过删除上面的代码并向队列发送消息)。然后我重新启动服务器,启用消息驱动适配器,并观察到所有消息都是从队列中消耗的,但是它们去了哪里?:-/

我的期望是这些消息会被导入一个名为DirectChannel inputChannel

代码语言:javascript
复制
<int:channel id="inputChannel"/>

我的service-activator消费如下所示:

代码语言:javascript
复制
<int:service-activator ref="myConsumer"
    method='execute' input-channel="inputChannel" output-channel="outputChannel">
    <int:request-handler-advice-chain>
        ...
    </int:request-handler-advice-chain>
</int:service-activator>

但是,当然,我从来没有看到myConsumer被调用。我想我对MessageProducer机制如何工作的理解是不够的。有人能通过提供一个简单的XML连接示例来纠正我的想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-15 20:20:45

根据日志,消息由handler.AbstractMessageHandler (AbstractMessageHandler.java:115) - ServiceActivator for [org.springframework.integration.handler.MethodInvokingMessageProcessor@493f49cd]使用。尽管这可能是一个完全不同的故事。

SqsMessageDrivenChannelAdapter可以与errorChannel一起提供,以处理下游异常。默认情况下,它只记录。

从该适配器发送的消息类似于:

代码语言:javascript
复制
return new GenericMessage<>(message.getBody(), new SqsMessageHeaders(messageHeaders));

那个message.getBody()String。见QueueMessageUtils.createMessage()

因此,请确保您的service-activator接受该String作为薪资,而不是任何其他类型。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42236661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档