yggdrasil v3.2.1 Yggdrasil.Subscriber.Adapter.Postgres View Source
Yggdrasil subscriber adapter for Postgres. The name of the channel must be a binary e.g:
Subscription to channel:
iex(1)> alias Yggdrasil.Channel
iex(2)> sub_channel = %Channel{
...(2)> name: "postgres_channel",
...(2)> adapter: Yggdrasil.Subscriber.Adapter.Postgres
...(2)> }
iex(3)> Yggdrasil.subscribe(sub_channel)
:ok
iex(4)> flush()
{:Y_CONNECTED, %Channel{name: "postgres_channel", (...)}}
Publishing message:
iex(5)> pub_channel = %Channel{
...(5)> name: "postgres_channel",
...(5)> adapter: Yggdrasil.Publisher.Adapter.Postgres
...(5)> }
iex(6)> Yggdrasil.publish(pub_channel, "message")
:ok
Subscriber receiving message:
iex(7)> flush()
{:Y_EVENT, %Channel{name: "postgres_channel", (...)}, "message"}
Instead of having sub_channel
and pub_channel
, the hibrid channel can be
used. For the previous example we can do the following:
iex(1)> alias Yggdrasil.Channel
iex(2)> channel = %Channel{name: "postgres_channel", adapter: :postgres}
iex(3)> Yggdrasil.subscribe(channel)
:ok
iex(4)> flush()
{:Y_CONNECTED, %Channel{name: "postgres_channel", (...)}}
iex(5)> Yggdrasil.publish(channel, "message")
:ok
iex(6)> flush()
{:Y_EVENT, %Channel{name: "postgres_channel", (...)}, "message"}
Link to this section Summary
Link to this section Functions
Starts a Postgres distributor adapter in a channel
with some distributor
publisher
and optionally GenServer
options
.
Stops the Postgres adapter with its pid
.