Чтобы узнать, что сообщение было успешно опубликовано, вам нужно посмотреть на результат в будущем.Предпочтительный способ сделать это асинхронно:
def callback(future):
try:
print(future.result()) # future.result() is the message ID for the published message.
except Exception as e:
print("Error publishing: " + str(e))
future = publisher.publish(topic_path, data=json.dumps(dict(op='create_master', review_id=1273612)))
future.add_done_callback(callback)
Вы также можете сделать это синхронно, если хотите.Вызов result()
в будущем будет блокироваться до тех пор, пока не станет доступен результат публикации:
future = publisher.publish(topic_path, data=json.dumps(dict(op='create_master', review_id=1273612)))
try:
print(future.result()) # future.result() is the message ID for the published message.
except Exception as e:
print("Error publishing: " + str(e))
Нет встроенного способа узнать, когда подписчики закончили обработку сообщения.Требование, чтобы издатели знали, когда подписчики обрабатывали сообщения, - это антишаблон;издатели и подписчики предназначены для разделения сущностей, которые непосредственно не знают друг о друге.При этом, если вам нужна такая информация, лучший способ сделать это - создать вторую тему, в которой ваши первоначальные подписчики публикуют сообщения после завершения обработки, на которые могут подписаться ваши оригинальные издатели, чтобы знать, когда обработказавершено.