T.O*_*ara 5 google-app-engine publish-subscribe node.js gcloud google-cloud-pubsub
我们正在从一个不稳定的消息队列服务转移到NodeJS中的Google的Pub Sub.它似乎运作良好,但我们想包括错误处理.
我们希望限制特定消息的重试次数,例如在我们的测试环境中重复10次,在生产中重复100次.现在,如果一条消息失败10次(在测试中),而不是它在我们的队列中并继续处理并失败7天,我们想将它移动到一个单独的错误队列并向我们发送电子邮件.
我们目前在之前的消息队列中设置了所有这些,但我们还没有为每条消息找到Google的Pub Sub重试计数属性.有谁知道这是否存在?
我们确实在Google App Engine中使用了任务队列,他们拥有我们需要的一切,但Google的pub sub似乎缺失了很多.我们确实要求任何解决方案都在Node中.
Cloud Pub/Sub对重试向订户传递消息的次数没有限制.如果您的订户从未在确认截止日期之前确认该消息,则将重新传送该消息,直到该消息在7天后过期.
如果您想停止接收这些消息,那么您需要在某些时候确认它们.如果您想防止订阅者无法处理的"死亡消息",我建议您执行以下操作:
跟踪数据库中的消息失败计数,按消息ID键入.希望失败不是很频繁,所以这个数据库不应该太大,只有在实际出现故障时才会对它进行查询.
当消息失败时,查询数据库并查看之前发生了多少次失败.增加计数器,如果计数低于阈值,则不会确认消息.
如果邮件失败次数超过阈值,则将邮件发布到单独的"失败邮件"主题,发送电子邮件并确认邮件.
如有必要,可以通过一种方法将"失败消息"主题中的消息发布回主要主题,此时导致消息首先出现故障的问题已得到纠正.
您现在将消息保存在单独的主题中(7天或直到您确认),并且不会将消息重新传递给主要主题的订阅者.
Aer*_*yno -2
在 python 中,请参阅 .execute() 上的“num_retries”参数:
pubsub_client.projects().topics().publish(topic='projects/xxxx',body=body).execute(num_retries=0)
不确定 Node.JS 中是否存在同样的事情,但我希望这能为您指明正确的方向。
归档时间: |
|
查看次数: |
3938 次 |
最近记录: |