如何将消息从 Lambda 回滚到 Amazon MQ (AMQ)?

How do I roll-back a message to Amazon MQ (AMQ) from Lambda?

所以,我假设这与任何 Node.js 和 Active MQ 安装有关,但我使用的是带有 Node.js Lambda 的 Amazon MQ...

ActiveMQ 有点菜鸟所以请纠正我的错误!

使用 stompit 从队列中读取消息后,我继续处理该消息,然后通过 HTTPS 将其发送到另一台服务器。 在通往 HTTPS POST 的途中发生了一些消息验证和丰富,当然 POST 本身可能会导致错误。

如果出现错误,我将如何(最好)处理消息的回滚:

1) 保持连接打开并且不发送 client.ack() 直到我最终从远程服务器返回 HTTP 200?

2) 将消息保存在一个变量中,并在出错时将其放回原位(顺序无关紧要?

3) 使用踩踏以外的东西?

使用 STOMP 显然是不可能的,所以我更改了代码以改用库 ampq10。

import amqp10 from 'amqp10';

const AMQPClient = amqp10.Client;

const amqpClient = new AMQPClient({
  receiverLink: {
    attach: {
      rcvSettleMode: amqp10.Constants.receiverSettleMode.settleOnDisposition
    },
    creditQuantum: 1
  }
});

如果成功处理邮件,这将允许您执行 receiver.accept(message);。如果您只是 .disconnect() 而没有 .accept() 消息将不会从队列中删除。