gpt4 book ai didi

java - 一次仅拉取一条消息

转载 作者:行者123 更新时间:2023-12-02 21:39:14 25 4
gpt4 key购买 nike

我目前面临的问题是我想实现一个简单的主从模式,其中主服务器通过将所有作业从头开始发布到主题来初始化作业队列。奴隶只要有空闲的工作能力就会拉这些工作,一次拉一个工作就可以实现拉。示例代码 on github 中的代码在特定时间拉取多条消息

subscriber.startAsync().awaitRunning();
Thread.sleep(params.y());

我不想这样,我只想从队列中拉取一条作业消息,让从属设备完成工作,工作完成后,调用拉取方法来拉取另一条作业消息,但一次只能拉取一条。由于我在 ExecutorService 中执行作业,因此我想确保如果我的线程池已满,我不会提取任何消息。如果有一项工作已完成且线程没有工作,我如何实现拉动一条消息,将该作业填充到我的 ExecutorService 中,并且仅拉动下一条作业消息?

最佳答案

一次提取一条消息将被视为 Google Cloud Pub/Sub 的反模式。您可以通过指定 FlowControlSettings 来控制传递给工作人员的消息数量。通过Subscriber Builder 。特别是,您可以调用 setMaxOutstandingElementCount在 FlowControlSettings Builder 上,限制已传递到您提供的 MessageReceiver 的最大消息数。如果您的每个工作人员都是单独的订阅者并且希望一次执行一个操作,您甚至可以将此数字设置为 1。

如果您需要更精确地控制订阅者的拉取语义,那么您可以使用gRPC library's pull method直接地。 Serivce APIs Overview有关此方法的更多信息。

关于java - 一次仅拉取一条消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43388359/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com