带有推送消费者的 Google Pub/Sub
Posted
技术标签:
【中文标题】带有推送消费者的 Google Pub/Sub【英文标题】:Google Pub/Sub with Push Consumers 【发布时间】:2019-12-04 15:11:41 【问题描述】:我们想使用 Google pub/sub 来消费消息。在 rabbitMQ 中,每当发布消息时,我们都会获取并处理它。我们的流程操作需要 3-4 小时,因此我们的消费者是 Windows 服务。
我们不想使用 pub/sub pull 因为我们不想投票。但是 Pub/sub 将发布推送到 Web 端点。由于我们长期运行的过程,我们不能使用 web 应用程序或 web api。有没有机会像在 rabbitmq 中一样消费 pub/sub 消息而不总是请求并且仅在有消息时消费。
谢谢
【问题讨论】:
我没有跟上这个谜题。当你说你不想投票时,你能澄清一下你的意思吗?我正在想象一个订阅者应用程序,当有新消息可用时它会收到通知。投票在哪里? @Kolban 在 google pub/sub 上有两种选择。拉或推。拉取是一次性请求。要获得新人消息,总是必须在一个循环中通过拉取请求进行询问。 Push 无需询问即可立即发送,但它需要一个 Web 端点。我的操作是一个漫长的过程,无法在 web 应用中完成。 您使用什么编程语言?当我看这里时...cloud.google.com/pubsub/docs/pull 我似乎发现对于许多语言,当有新消息可用时,注册一个回调函数将被调用。对我来说,这意味着我的逻辑开始,然后识别特定的订阅并注册一个回调函数。那时,不需要进一步明确的“轮询”......当发布新消息时,我的应用“简单地”接收新消息。 @Kolban 我正在使用 c#,但我认为文档误导了我(在 cloud.google.com/pubsub/docs/subscriber 中,它告诉“订阅应用程序显式调用 pull 方法,它请求传递消息。”)我使用订阅者服务ApiClient.PullAsync。但是您的示例按预期工作。我不知道它是否会多次隐式调用 pullasync,但至少我不必这样做。非常感谢。 【参考方案1】:Google Pub Sub 技术不需要持续明确地轮询 PubSub 环境。如果使用客户端库,则可以在客户端应用程序中配置回调函数,当新消息发布到已订阅的主题时调用该回调函数。
【讨论】:
以上是关于带有推送消费者的 Google Pub/Sub的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 Google Cloud Monitoring JAVA 客户端库获取 Pub/Sub 订阅中未确认消息的数量