RabbitMQStream
Zero dependencies Elixir Client for RabbitMQ Streams Protocol.
Usage
Subscribing to stream
First you define a connection
defmodule MyApp.MyConnection do
use RabbitMQStream.Connection
end
Then you can subscribe to messages from a stream:
{:ok, _subscription_id} = MyApp.MyConnection.subscribe("stream-01", self(), :next, 999)
Publishing to stream
RabbitMQ Streams protocol needs a static :reference_name per publisher. This is used to prevent message duplication. For this reason, each stream needs, for now, a static module to publish messages, which keeps track of its own publishing_id.
You can define a Publisher module like this:
defmodule MyApp.MyPublisher do
use RabbitMQStream.Publisher,
stream: "stream-01",
connection: MyApp.MyConnection
end
Then you can publish messages to the stream:
MyApp.MyPublisher.publish("Hello World")
Installation
The package can be installed by adding rabbitmq_stream to your list of dependencies in mix.exs:
def deps do
[
{:rabbitmq_stream, "~> 0.2.0"},
# ...
]
end
For more information, check the documentation.