如果您想在Google Cloud Pub / Sub之上实现生产者/消费者模式,您可能希望每条消息只能由一个消费者处理。但Google Cloud Pub / Sub会将每条消息发送给所有订阅者。
但AWS / SQS具有以下功能,可以轻松保证:
收到消息后,处理时会被“锁定”。 这使其他计算机无法同时处理消息。 如果消息处理失败,则锁定将过期并显示消息 将再次可用。在应用程序需要更多的情况下 处理时间,“锁定”超时可以通过动态改变 ChangeMessageVisibility操作。
如何在Google Cloud Pub / Sub之上实现生产者/消费者模式?或者还有其他替代Google Cloud产品?
答案 0 :(得分:1)
Google Cloud Pub / Sub有类似的机制。请注意,并非每个订阅者都会收到每条消息,每个订阅都会收到每条消息。区别很重要。单个订阅可以有多个订阅者,同时提取消息并同时处理同一订阅的不同消息。
在单个订阅中,当向订阅者发送消息时,在订阅创建时指定的ack截止日期(默认值为10秒),将不会将该消息发送给该订阅的另一个订阅者。接收消息的订户直到确认消息的ack截止日期或延长ack截止时间,这允许它花费更长的时间来处理消息而消息不被传递给其他订户。在某些客户端库中自动处理扩展ack截止日期,例如Java和Go,而其他人则需要明确修改ack截止日期,例如Python。确认截止日期的行为与SQS的可见性超时相同。
有关详细信息,请参阅message acknowledgement deadline。