A Vert.x client allowing applications to interact with a RabbitMQ broker (AMQP 0.9.1)
This service is experimental and the APIs are likely to change before settling down.
Getting Started
Maven
Add the following dependency to your maven project
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-rabbitmq-client</artifactId>
<version>3.3.0.CR2</version>
</dependency>
Gradle
Add the following dependency to your gradle project
dependencies {
compile 'io.vertx:vertx-rabbitmq-client:3.3.0.CR2'
}
Create a client
You can create a client instance as follows:
require 'vertx-rabbitmq/rabbit_mq_client'
client = VertxRabbitmq::RabbitMQClient.create(vertx, config)
Operations
The following are some examples of the operations supported by the RabbitMQService API.
Consult the javadoc/documentation for detailed information on all API methods.
Publish
Publish a message to a queue
message = {
'body' => "Hello RabbitMQ, from Vert.x !"
}
client.basic_publish("", "my.queue", message) { |pubResult_err,pubResult|
if (pubResult_err == nil)
puts "Message published !"
else
pubResult_err.print_stack_trace()
end
}
Consume
Consume messages from a queue
// Create the event bus handler which messages will be sent to
# Create the event bus handler which messages will be sent to
vertx.event_bus().consumer("my.address") { |msg|
json = msg.body()
puts "Got message: #{json['body']}"
}
# Setup the link between rabbitmq consumer and event bus address
client.basic_consume("my.queue", "my.address") { |consumeResult_err,consumeResult|
if (consumeResult_err == nil)
puts "RabbitMQ consumer created !"
else
consumeResult_err.print_stack_trace()
end
}
Get
Will get a message from a queue
client.basic_get("my.queue", true) { |getResult_err,getResult|
if (getResult_err == nil)
msg = getResult
puts "Got message: #{msg['body']}"
else
getResult_err.print_stack_trace()
end
}
Consume messages without auto-ack
# Create the event bus handler which messages will be sent to
vertx.event_bus().consumer("my.address") { |msg|
json = msg.body()
puts "Got message: #{json['body']}"
# ack
client.basic_ack(json['deliveryTag'], false) { |asyncResult_err,asyncResult|
}
}
# Setup the link between rabbitmq consumer and event bus address
client.basic_consume("my.queue", "my.address", false) { |consumeResult_err,consumeResult|
if (consumeResult_err == nil)
puts "RabbitMQ consumer created !"
else
consumeResult_err.print_stack_trace()
end
}
Running the tests
You will need to have RabbitMQ installed and running with default ports on localhost for this to work. <a href="mailto:nscavell@redhat.com">Nick Scavelli</a>