# Vert.x AMQP Bridge

This component provides AMQP 1.0 producer and consumer support via a bridging layer implementing the Vert.x event bus MessageProducer and MessageConsumer APIs over the top of vertx-proton.

Warning | this module has the tech preview status, this means the API can change between versions.

## Using Vert.x AMQP Bridge

To use Vert.x AMQP Bridge, add the following dependency to the dependencies section of your build descriptor:

- Maven (in your `pom.xml`):

    <dependency>
      <groupId>io.vertx</groupId>
      <artifactId>vertx-amqp-bridge</artifactId>
      <version>3.3.0-SNAPSHOT</version>
    </dependency>

- Gradle (in your `build.gradle` file):

    compile io.vertx:vertx-amqp-bridge:3.3.0-SNAPSHOT

### Sending a Message

Here is a simple example of creating a `MessageProducer` and sending a message with it. First, an `AmqpBridge` is created and started to establish the underlying AMQP connection, then when this is complete the producer is created and a message sent using it. You can also optionally supply `AmqpBridgeOptions` when creating the bridge in order to configure various options, such as SSL connections.

    require 'vertx-amqp-bridge/amqp_bridge'
    bridge = VertxAmqpBridge::AmqpBridge.create(vertx)
    # Start the bridge, then use the event loop thread to process things thereafter.
    bridge.start("localhost", 5672) { |res_err,res|
      # Set up a producer using the bridge, send a message with it.
      producer = bridge.create_producer("myAmqpAddress")

      amqpMsgPayload = {
      }
      amqpMsgPayload['body'] = "myStringContent"

      producer.send(amqpMsgPayload)
    }

### Receiving a Message

Here is a simple example of creating a `MessageConsumer` and registering a handler with it. First, an `AmqpBridge` is created and started to establish the underlying AMQP connection, then when this is complete the consumer is created and a handler registered that prints the body of incoming AMQP messages.

    require 'vertx-amqp-bridge/amqp_bridge'
    bridge = VertxAmqpBridge::AmqpBridge.create(vertx)
    # Start the bridge, then use the event loop thread to process things thereafter.
    bridge.start("localhost", 5672) { |res_err,res|
      # Set up a consumer using the bridge, register a handler for it.
      consumer = bridge.create_consumer("myAmqpAddress")
      consumer.handler() { |vertxMsg|
        amqpMsgPayload = vertxMsg.body()
        amqpBody = amqpMsgPayload['body']

        puts "Received a message with body: #{amqpBody}"
      }
    }