5

我正在尝试通过调用 AWS lambda 函数向 rabbitmq 发送 s3event 消息。我已将 SQS 配置为我的死信队列 (DLQ)。我知道当调用 lambda 失败或超时或资源限制等情况时,消息会发送到 DLQ。我的问题是,我想在特定条件下从 lambda 函数内部向 DLQ 发送事件消息,例如 rabbitmq 是否关闭或我感兴趣的其他一些条件。有没有相同的可能性?我应该抛出异常还是有其他更好的方法可以将事件消息发送到 DLQ。

我正在使用 java 进行开发并从我的 lambda 函数连接到 rabbitmq。

4

2 回答 2

6

DLQ 只是一个 SQS 队列,因此您可以像发送任何其他队列一样向它发送消息。您会希望它的格式与 Lambda 原生将消息放入 DLQ 中的方式相同,以便您在 DLQ 上进行的任何处理都可以对所有消息执行相同的方式。您可能希望确保在此实例中将 lambda 视为成功执行,以便正常的 DLQ 进程不会两次接收相同的消息。

于 2018-03-21T18:39:15.443 回答
1

DLQLambda 的设置中,您指定一个 SNS 主题或一个 SQS 队列。在您的设置中,您已将 DLQ 配置为 SQS 队列。这是一个常规的 SQS 队列。使用 SQS Java SDK,您可以将消息发布到该 SQS 队列。

这里有一些参考: https ://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-send-message.html

要获取队列 URL,您可以使用这些: https ://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_GetQueueUrl.html

或通过 Java: https ://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/sqs/AmazonSQSClient.html#getQueueUrl-java.lang.String-

于 2018-03-21T18:37:27.253 回答