# “Hello World!” : The simplest thing that does something

## Sending

Our first script to send a single message to the queue.

Creating a new connection:

>     import asyncio
>     import aioamqp

>     async def connect():
>         transport, protocol = await aioamqp.connect()
>         channel = await protocol.channel()

>     asyncio.get_event_loop().run_until_complete(connect())

This first scripts shows how to create a new connection to the AMQP broker.

Now we have to declare a new queue to receive our messages:

>     await channel.queue_declare(queue_name='hello')

We’re now ready to publish message on to this queue:

>     await channel.basic_publish(
>         payload='Hello World!',
>         exchange_name='',
>         routing_key='hello'
>     )

We can now close the connection to rabbit:

>     # close using the `AMQP` protocol
>     await protocol.close()
>     # ensure the socket is closed.
>     transport.close()

You can see the full example in the file example/send.py.

## Receiving

We now want to unqueue the message in the consumer side.

We have to ensure the queue is created. Queue declaration is indempotant.

>     await channel.queue_declare(queue_name='hello')

To consume a message, the library calls a callback (which MUST be a coroutine):

>     async def callback(channel, body, envelope, properties):
>         print(body)

>     await channel.basic_consume(callback, queue_name='hello', no_ack=True)