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 自动死信功能.
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 自动死信功能.