代码之家  ›  专栏  ›  技术社区  ›  Anders

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

  •  0
  • Anders  · 技术社区  · 8 年前

    所以,我假设这与任何节点有关。js和活动MQ安装,但我使用的是带有节点的Amazon MQ。js Lambda。。。

    有点像ActiveMQ上的noob,所以请纠正我的错误!

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

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

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

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

    3) 使用除跺脚以外的其他方法?

    1 回复  |  直到 8 年前
        1
  •  0
  •   Anders    8 年前

    显然,使用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() 删除an .accept() 消息不会从队列中删除。