yggdrasil v3.3.0 Yggdrasil.Subscriber.Adapter.RabbitMQ View Source

Yggdrasil subscriber adapter for RabbitMQ. The name of the channel should be a tuple with the name of the exchange and the routing key. The exchange should be a topic (or any exchange that redirects to topic) e.g:

Subscription to channel:

iex(1)> name = {"amq.topic", "channel"}
iex(2)> channel = %Yggdrasil.Channel{name: name, adapter: :rabbitmq}
iex(3)> Yggdrasil.subscribe(channel)
:ok
iex(4)> flush()
{:Y_CONNECTED, %Yggdrasil.Channel{name: {"amq.topic", "channel"}, (...)}}

Publishing message:

iex(5)> Yggdrasil.publish(channel, "foo")
:ok

Subscriber receiving message:

iex(6)> flush()
{:Y_EVENT, %Yggdrasil.Channel{name: {"amq.topic", "channel"}, (...)}, "foo"}

The subscriber can also unsubscribe from the channel:

iex(7)> Yggdrasil.unsubscribe(channel)
:ok
iex(8)> flush()
{:Y_DISCONNECTED, %Yggdrasil.Channel{name: {"amq.topic", "channel"}, (...)}}

Link to this section Summary

Functions

Starts a RabbitMQ distributor adapter in a channel with some distributor publisher and optionally GenServer options

Stops the RabbitMQ adapter with its pid

Link to this section Functions

Link to this function start_link(channel, publisher, options \\ []) View Source

Starts a RabbitMQ distributor adapter in a channel with some distributor publisher and optionally GenServer options.

Stops the RabbitMQ adapter with its pid.