Natsex v0.4.0 Natsex View Source

Elixir client for NATS.

Examples

iex(1)> Natsex.start_link
{:ok, #PID<0.178.0>}

iex(2)> Natsex.subscribe "telegram.user.notifications", self
"13b2d0cd-9dba-43b6-bb5d-288d48346ff4"

iex(3)> flush
{:natsex_message,
 {"telegram.user.notifications", "13b2d0cd-9dba-43b6-bb5d-288d48346ff4", nil},
 "Good news, everyone!"}
:ok

# sent a message and waits a response, aka "Request-Reply"
iex(4)> Natsex.request("questions", "sup?")
{:ok, "response"}

Link to this section Summary

Functions

Publishes the message to NATS

Sending a message and waiting a response, aka “Request-Reply”

Stop client

Initiates a subscription to a subject. When new message will arrive, caller process will receive message

Unsubcribes the connection from the specified subject, or auto-unsubscribes after the specified number of messages has been received

Link to this section Functions

Link to this function publish(subject, payload \\ "", reply \\ nil) View Source

Publishes the message to NATS

Examples

Natsex.publish("news.urgent", "today is monday")
:ok
Link to this function request(subject, payload, timeout \\ 1000) View Source

Sending a message and waiting a response, aka “Request-Reply”

Examples

# wait response with default timeout 1sec
{:ok, response} = Natsex.request("questions", "sup?")

# wait response with custom timeout 10sec
:timeout = Natsex.request("questions", "sup?", 10_000)
Link to this function start_link(config \\ nil, connect_timeout \\ 200, ping_interval \\ 20000) View Source

Starts Natsex client process

Examples

# connects with default params, host - "localhost", port - 4222
Natsex.start_link
{:ok, #PID<0.194.0>}

# connects on custom port with credentials
Natsex.start_link(%{host: "localhost", port: 4567, user: "admin", pass: "12345"})
{:ok, #PID<0.195.0>}

# connects with timeout 2sec
Natsex.start_link(%{}, 2_000)
{:ok, #PID<>}
Link to this function subscribe(subject, who, sid \\ nil, queue_group \\ nil) View Source

Initiates a subscription to a subject. When new message will arrive, caller process will receive message:

{:natsex_message, {subject, sid, nil}, message}

Examples

sid = Natsex.subscribe("news.urgent", self())
flush
{:natsex_message,
 {"telegram.user.notifications", "sub_id", nil},
 "Good news, everyone!"}
Link to this function unsubscribe(sid, max_messages \\ nil) View Source

Unsubcribes the connection from the specified subject, or auto-unsubscribes after the specified number of messages has been received.

Examples

Natsex.unsubscribe "13b2d0cd-9dba-43b6-bb5d-288d48346ff4"
:ok