amazon-web-services - SQS lambda 集成- Lambda 没有收到任何消息
问题描述
我有读取 sqs 消息并处理它的 lambda 函数。我已经为集成实现了一个触发器(lambda 触发器)。
每次我将消息推送到队列时,都会调用 Lambda,从日志中我了解到所有消息都处于飞行状态。
String queueUrl = sqs.getQueueUrl("test_queue").getQueueUrl();
final ReceiveMessageRequest receiveMessageRequest = new
ReceiveMessageRequest(queueUrl);
int count = getMessagesCount(sqs);
while(messagesCount > 0) {
List<Message> messages =
sqs.receiveMessage(receiveMessageRequest).getMessages();
logger.info("No.of messages in queue :{} ", count);
Lambda 超时和 sqs 可见性超时为 20 分钟。SQS配置如下
解决方案
当您将 SQS 与 Lambda 集成使用时,AWS 会处理轮询队列中的消息并将它们发送到 Lambda 函数。该消息正在传输中,因为 AWS 已经为您检索了该消息。你不应该打电话sqs.receiveMessage
。您甚至根本不需要使用 SQS API。消息在event
调用时传递给您的 Lambda 函数的对象中。您需要做的就是处理消息。
推荐阅读
- python - 如何从两个单独的列表中获取公共整数元素的索引并将其插入另一个列表?
- python - 奇怪的python字典?
- php - PHP 的简易表单验证库?
- phonegap-plugins - 如何使用 Phonegap-admob 插件在 Phonegap Build 中展示广告?
- python - 一个条形图中的多个条形图
- android - 在使用 MVVM Android 的 Switch 组件上使用自定义属性进行双向数据绑定
- python - 为什么 Tkinter 为我的按钮创建一个新窗口?
- python - 没有找到与 lal 匹配的分布
- c# - 如何在c#中从没有SPLIT的字符串中获取单词
- java - Mac上有_JAVA_OPTIONS吗?