我正在尝试通过调用AWS lambda函数将s3event消息发送到rabbitmq . 我已将SQS配置为我的死信队列(DLQ) . 我知道当调用lambda失败或者超时或资源限制等情况时,消息会被发送到DLQ . 我的问题是,我想在某些条件下从lambda函数内部向DLQ发送事件消息,例如,如果rabbitmq已经关闭或者我感兴趣的其他条件 . 有没有相同的可能性?我应该抛出异常还是有其他更好的方法来向DLQ发送事件消息 .
我正在使用java进行开发并从我的lambda函数连接到rabbitmq .
2 回答
DLQ只是一个SQS队列,所以你可以像对待任何其他队列一样send a message . 您希望它的格式与Lambda本身在DLQ中放置消息的方式相同,这样您在DLQ上进行的任何处理都可以对所有消息执行相同的操作 . 您可能希望确保在此实例中将lambda视为已成功执行,以便正常的DLQ进程不会两次拾取相同的消息 .
在Lambda的
DLQ
设置中,您可以指定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-