def consume_full_message_and_do_ack(service: MessagingService, queue_to_consume: Queue, publisher, message): receiver: PersistentMessageReceiver = service.create_persistent_message_receiver_builder() \ .with_message_auto_acknowledgement().build(queue_to_consume) receiver.start() print(f'PERSISTENT receiver started... Listening to Queue [{queue_to_consume.get_name()}]') receiver.add_subscription(TopicSubscription.of(topic_name)) HowToPublishPersistentMessage.publish_string_message_non_blocking(publisher, topic, message) message: InboundMessage = receiver.receive_message() print(f"the message payload is {message.get_payload_as_string()}")
def consume_full_message_using_callback_and_do_ack(service: MessagingService, queue_to_consume: Queue, publisher, message): try: receiver: PersistentMessageReceiver = service.create_persistent_message_receiver_builder() \ .with_message_auto_acknowledgement().build(queue_to_consume) receiver.start() print(f'PERSISTENT receiver started... Listening to Queue [{queue_to_consume.get_name()}]') receiver.add_subscription(TopicSubscription.of(topic_name)) message_handler = BasicTestMessageHandler() receiver.receive_async(message_handler) HowToPublishPersistentMessage.publish_string_message_non_blocking(publisher, topic, message) finally: receiver.terminate() HowToConsumeMessageExclusiveVsSharedMode.delete_queue(queue_to_consume.get_name())
def all_messages_replay(service: MessagingService, queue_to_consume: Queue): receiver = None try: reply_strategy = ReplayStrategy.all_messages() receiver: PersistentMessageReceiver = service.create_persistent_message_receiver_builder() \ .with_message_replay(reply_strategy).build(queue_to_consume) receiver.start() message: InboundMessage = receiver.receive_message(timeout=5000) if message: print( f"the message payload is {message.get_payload_as_string()}" ) receiver.ack() finally: if receiver: receiver.terminate()
def time_based_replay(service: MessagingService, queue_to_consume: Queue): receiver = None try: reply_strategy = ReplayStrategy.time_based( datetime.now() ) # replay_date can be earlier/equal to the date of the message publish was done receiver: PersistentMessageReceiver = service.create_persistent_message_receiver_builder() \ .with_message_replay(reply_strategy).build(queue_to_consume) receiver.start() message: InboundMessage = receiver.receive_message(timeout=5000) if message: print( f"the message payload is {message.get_payload_as_string()}" ) receiver.ack() finally: if receiver: receiver.terminate()
def id_based_replay( service: MessagingService, queue_to_consume: Queue, restored_replication_group_message_id: 'ReplicationGroupMessageId' ): """Showcase for API to trigger message replay using string representation of a replication group message Id""" receiver = None try: reply_strategy = ReplayStrategy.replication_group_message_id_based( restored_replication_group_message_id) receiver: PersistentMessageReceiver = service.create_persistent_message_receiver_builder() \ .with_message_replay(reply_strategy).build(queue_to_consume) receiver.start() message: InboundMessage = receiver.receive_message(timeout=5000) if message: print( f"the message payload is {message.get_payload_as_string()}" ) receiver.ack() finally: if receiver: receiver.terminate()