Elixir client for NATS
The package can be installed by adding natsex
to your list of dependencies in mix.exs
:
def deps do
[
{:natsex, "~> 0.9.1"}
]
end
# connects with default params, host - "localhost", port - 4222
iex(1)> {:ok, pid} = Natsex.start_link()
{:ok, #PID<0.195.0>}
# or connects on custom port with credentials
iex(1)> {:ok, pid} = Natsex.start_link(config: %{host: "localhost", port: 4567, user: "admin", pass: "12345"})
{:ok, #PID<0.195.0>}
iex(2)> Natsex.subscribe(pid, "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(pid, "questions", "sup?")
{:ok, "response"}
iex(5)> Natsex.stop(pid)
:ok
# connects with tls
iex(1)> Natsex.start_link(config: %{tls_required: true})
{:ok, #PID<0.195.0>}
# connects with client cert
iex(1)> Natsex.start_link(config: %{tls_required: true,
cert_path: Path.expand("./cert.crt"),
cert_key_path: Path.expand("./client.key")})
{:ok, #PID<0.195.0>}
Name | ips | average | deviation | median | 99th % |
---|---|---|---|---|---|
parse-128 | 372.53 K | 2.68 μs | ±1421.03% | 2 μs | 12 μs |
pub - 128 | 15.96 K | 62.67 μs | ±30.65% | 59 μs | 111 μs |
sub-unsub-pub-16 | 4.45 K | 224.69 μs | ±47.88% | 210 μs | 449 μs |
request/reply | 3.60 K | 277.94 μs | ±18.10% | 262 μs | 448 μs |
nats://user:password@server:port
)