# Pre-requisites
import time
from threading import Thread
from pip_services4_messaging.queues import IMessageReceiver, MemoryMessageQueue, MessageEnvelope

from pip_services4_components.context import IContext

my_context = IContext()

# Message receiver
class MyMessageReceiver(IMessageReceiver):
    def receive_message(self, envelop, queue):
        print("Received message: " + envelop.get_message_as_string())

# Message queue
messageQueue = MemoryMessageQueue()
messageQueue.open(my_context)

# Listener
Thread(target=messageQueue.listen, args=(my_context, MyMessageReceiver()), daemon=True).start()

# Send message
messageQueue.send(my_context, MessageEnvelope(None, "mymessage", "ABC")) 
time.sleep(0.1)  # wait message

# Close message queue
messageQueue.close(my_context)