Rabbitmq 在同一主题上创建多个sub以实现负载共享(pub/sub)

Rabbitmq 在同一主题上创建多个sub以实现负载共享(pub/sub),rabbitmq,publish-subscribe,google-cloud-pubsub,Rabbitmq,Publish Subscribe,Google Cloud Pubsub,我花了将近一天的时间在google pub sub文档上创建了一个小应用程序。我正在考虑从rabbitMQ切换到google pub/sub。以下是我的问题: 我有一个将消息推送到主题(T)的应用程序。我想通过订阅者进行负载共享。所以我为T创建了3个订户。我保持了所有3个Sub的名称相同,这样我就不会三次收到相同的消息 我有两个问题: 我看不到T的3个相同的订阅者。它显示了1个 如果我尝试同时启动订阅服务器的所有3个实例。我得到“发生了服务错误”。如果按顺序启动,错误将消失 最后,谷歌对酒吧/酒

我花了将近一天的时间在google pub sub文档上创建了一个小应用程序。我正在考虑从rabbitMQ切换到google pub/sub。以下是我的问题:

我有一个将消息推送到主题(T)的应用程序。我想通过订阅者进行负载共享。所以我为T创建了3个订户。我保持了所有3个Sub的名称相同,这样我就不会三次收到相同的消息

我有两个问题:

  • 我看不到T的3个相同的订阅者。它显示了1个
  • 如果我尝试同时启动订阅服务器的所有3个实例。我得到“发生了服务错误”。如果按顺序启动,错误将消失
  • 最后,谷歌对酒吧/酒吧是认真的吗?查看文档和公众参与,我不确定是否应该切换到google pub/sub


    谢谢,

    在pub/sub中,每个订阅都会获得每条消息的副本。所以,要实现消息处理的负载平衡,您不需要3个不同的订阅,而需要一个将消息分发给3个工作者的订阅

    如果您使用的是拉式交付,只需创建一个订阅(作为设置系统时的一次性操作),并让每个工作人员从同一订阅中拉式发送

    如果您使用的是推送交付,则让单个订阅推送到提供负载平衡的单个端点(例如,推送到后端服务中具有多个实例的HTTP负载平衡器)


    谷歌非常重视发布/订阅,它与许多产品(GCS、BigQuery、Dataflow、Stackdriver、云功能等)进行了深度集成Google在内部使用它。

    在pub/sub中,每个订阅都会获得每条消息的副本。因此,要平衡处理消息的负载,您不需要3个不同的订阅,而需要一个将消息分发给3个工作人员的订阅

    如果您使用的是拉式交付,只需创建一个订阅(作为设置系统时的一次性操作),并让每个工作人员从同一订阅中拉式发送

    如果您使用的是推送交付,则让单个订阅推送到提供负载平衡的单个端点(例如,推送到后端服务中具有多个实例的HTTP负载平衡器)


    谷歌非常重视发布/订阅,它与许多产品(GCS、BigQuery、Dataflow、Stackdriver、云功能等)进行了深度集成谷歌在内部使用它。

    嗨,到目前为止,我还无法让这么简单的事情变得有效。如果我创建了3个带有消息handler的订阅者,即使在虚拟机中看到它们,也只会触发一个消息处理程序。当我使用两个虚拟机和它们自己的订阅者一起使用时,只有一个收到它。使用Redis,这一切正常。我怀疑这是错误的至于ack消息,它似乎不仅不会重新发送给一个订阅者,而且会发送给任何其他订阅者。我仍在调查,但文档(用于Java)不是很有帮助。嗨,到目前为止,我还无法让这么简单的事情正常工作。如果我创建了3个带有消息handler的订阅者,即使在VM中看到它们,也只会触发一个消息处理程序。当我使用两个VM和它们自己的订阅者一起使用时,只有一个收到它。对于Redis,这与预期的效果是一样的。我怀疑这与ack消息,它似乎不仅不会重新发送给一个订阅者,而且会发送给任何其他订阅者。我仍在调查,但文档(用于Java)并没有太大帮助。