【问题标题】:How to check acknowledgement time in GCP pub/sub如何在 GCP pub/sub 中检查确认时间
【发布时间】:2021-09-16 17:46:57
【问题描述】:

我是 Google Cloud Pub/Sub 的新手。我创建了一个主题并创建了一个订阅。用Java处理消息。我创建了一个MyReceiver类,实现了MessageReceiver接口的receiveMessage(PubsubMessage message, AckReplyConsumer consumer)。

@Service
public class MyReceiver implements MessageReceiver {

    
    ThreadPoolExecutor executor = (ThreadPoolExecutor) Executors.newFixedThreadPool(2);

    @Override
    public void receiveMessage(PubsubMessage message, AckReplyConsumer consumer) {
        System.out.println(message.getMessageId());

          executor.execute(() -> {
                Thread.sleep(60000);
                consumer.ack();
            });
    }

}

我想检查等待60000毫秒后成功确认的消息的确认时间。有人可以帮忙检查确认时间吗?如果 GCP 提供任何让我知道这一点的仪表板、日志记录或类的方式?

【问题讨论】:

    标签: java spring-boot google-cloud-platform


    【解决方案1】:

    Cloud Pub/Sub 不跟踪确认时间,因此不会返回有关确认的时间信息。

    要知道消息的确认时间,您必须在代码中手动跟踪它,方法是在确认消息时添加当前时间戳。

    例如,使用来自this 文档的示例代码,我在回调函数中添加了 datetime.datetime.now():

    def callback(message: pubsub_v1.subscriber.message.Message) -> None:
       print(f"Received {message}."+ str(datetime.datetime.now()) )
       message.ack()
    
    streaming_pull_future = subscriber.subscribe(subscription_path, callback=callback)
    print(f"Listening for messages on {subscription_path}..\n")
    

    【讨论】:

      猜你喜欢
      • 2019-04-10
      • 2020-02-05
      • 2020-06-24
      • 2021-12-12
      • 2019-04-10
      • 2017-10-11
      • 2022-01-03
      • 2019-07-26
      • 2022-01-13
      相关资源
      最近更新 更多