Google Pubsub - 如何在 NACK() 之前 add/update 自定义属性

Google Pubsub - how to add/update custom attributes before NACK()

Google pubsub 允许在发布消息之前添加 自定义属性,例如:

{
  data: {
    something: "value"
  },
  attributes: {
    attribute1: "value"
  }
};

在订阅中接收消息时,您必须 ack() 或 nack() 消息以允许代理知道消息是否已被确认,或者是否必须将其从库存中删除并安排重新传送。

我想在 nack() 之前更新消息中的 自定义属性 ,添加一个名为 ErrorCode[=34= 的 属性 ] - 因此,在 X 次重试后,消息应该自动发布到 DLQ 主题,其属性中包含 ErrorCode

但是,当我更新消息属性并 nack() 它时,订阅者下次收到相同的消息时,属性不会更新:

message.attributes = {ErrorCode: "123"}    
message.nack();

在此示例中,消息中 属性 的值保持只有 属性 attribute1在下次订阅者收到消息时

有人知道如何为当前消息更新自定义属性吗?如果不可能(似乎是这样),对此有何解决方案?

消息发布后,消息中的属性是不可变的。如果您正在更改属性,您只是在本地副本中更改它们。如果您想在消息发送到死信主题时更改消息中的属性,则必须手动执行该过程,自己发布到另一个主题,而不是依赖 Pub/Sub 自动死信功能.