# README
RabbitMQ adaptor
The RabbitMQ adaptor is capable of consuming and publishing JSON data.
When being used to publish data, you need to configure the routing_key
and the exchange is pulled
from the message namespace
(i.e. database collection/table). If key_in_field
is set to true,
transporter will use the field defined routing_key
to lookup the value from the data.
NOTE
key_in_field
defaults to false and will therefore use the static routing_key
, if you
set routing_key
to an empty string, no routing key will be set in the published message.
Configuration
rmq = rabbitmq({
"uri": "amqp://127.0.0.1:5672/",
"routing_key": "test",
"key_in_field": false
// "delivery_mode": 1, // non-persistent (1) or persistent (2)
// "api_port": 15672,
// "ssl": false,
// "cacerts": ["/path/to/cert.pem"]
})
Run adaptor test
Spin up required containers (rabbitmq, haproxy)
# From transporter's root folder
cd config/rabbitmq
docker build . -t rabbit_haproxy
cd test_setup
docker-compose up -d
# Wait ~30s
Run the tests
# From transporter's root folder
go test -v ./adaptor/rabbitmq/
# Functions
NewClient creates a new client to work with RabbitMQ.
WithCACerts configures the RootCAs for the underlying TLS connection.
WithSSL configures the database connection to connect via TLS.
WithURI defines the full connection string for the RabbitMQ connection.
# Constants
DefaultAPIPort is the default API port for RabbitMQ.
DefaultDeliveryMode is used when writing messages to an exchange.
DefaultRoutingKey is set to an empty string so all messages published to the exchange will get routed to whatever queues are bound to it.
DefaultURI is the default endpoint of RabbitMQ on the local machine.
# Structs
Client wraps the underlying connection to a RabbitMQ cluster.
Reader implements client.Reader by consuming messages from the cluster based on its configuration.
Session encapsulates an amqp.Connection and amqp.Channel for use by a Reader/Writer.
Writer implements client.Writer by publishing messages to the cluster based on its configuration.
# Type aliases
ClientOptionFunc is a function that configures a Client.