Google Cloud PubSub Java客户端消息发布持久化保障咨询
Google Cloud Pub/Sub Java客户端消息发布保障疑问解答
当
myPublisher.publish(myMessage).get()成功返回(执行到// do other processing部分)时,可以确保消息已经被Google Pub/Sub服务器安全持久化存储。因为publish()返回的ApiFuture只有在服务端确认消息写入持久化存储后才会完成,get()方法会阻塞等待这个确认过程,只要没有抛出异常,就代表服务端已经接收并存储了消息。不需要校验返回的
messageId。messageId是Pub/Sub为成功存储的消息生成的唯一标识,它的返回本身就是服务端确认消息成功存储的结果。只要get()调用无异常,拿到的messageId就对应着已安全存储的消息,无需额外校验。你采用的同步调用
get()的方式完全可行。这种方式和使用ApiFutures.addCallback的异步方式在消息保障能力上是一致的,只是前者是同步阻塞等待确认,后者是异步接收通知。只要业务逻辑可以接受同步等待的耗时,这种写法没有问题。
内容的提问来源于stack exchange,提问作者Dave McCullough
相关产品推荐
相关产品推荐

