Write is the entry point function for performing write operations in RabbitMQ.
This is where we verify that the passed args and flags combo makes sense,
attempt to establish a connection, parse protobuf before finally attempting
to perform the write.
Reader holds all attributes required for performing a read/write operations
in RabbitMQ. This struct should be instantiated via the rabbitmq.Read(..) or
rabbitmq.Write(..) functions.