def receive_from_durable_non_exclusive_queue(messaging_service, topic,
                                                     publisher, message):
            """method to receive messages from durable non exclusive queue"""
            try:
                queue_name = constants.QUEUE_NAME_FORMAT.substitute(
                    iteration=topic_name)
                HowToConsumeMessageExclusiveVsSharedMode.create_queue_and_add_topic(
                    queue_name, access_type="non-exclusive")
                durable_non_exclusive_queue = Queue.durable_non_exclusive_queue(
                    queue_name)

                receiver = HowToConsumeMessageExclusiveVsSharedMode \
                    .create_persistent_message_receiver(messaging_service, durable_non_exclusive_queue)

                message_receiver = BasicTestMessageHandler()
                receiver.receive_async(message_receiver)

                HowToPublishPersistentMessage.publish_string_message_non_blocking(
                    publisher, topic, message)
                time.sleep(1)
                print(
                    f'Message received count: {message_receiver.total_message_received_count}'
                )
            finally:
                receiver.terminate(0)
                HowToConsumeMessageExclusiveVsSharedMode.delete_queue(
                    queue_name)