Skip to content

Idiomatic Elixir client for Nats.io messaging system

License

Notifications You must be signed in to change notification settings

iamd3vil/nats_ex

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NatsEx Build Status

An idiomatic Elixir client for Nats.io messaging system

Currently PubSub functionality is implemented.

Getting started

You can start a connection with Natsd like this. See NatsEx.Connection for configuration options.

{:ok, conn} = NatsEx.Connection.connection

Subscription

For subscription to a certain topic, you can use sub/2 or sub/3 in NatsEx.Connection module. You can also give a queue group for the subscription.

:ok = NatsEx.Connection.sub(conn, "foo.bar") # No queue group
:ok = NatsEx.Connection.sub(conn, "foo.bar", 22) # Queue group 22

When a new message comes to a certain topic, a new message is received by all the subscribers. The message format is {:nats_ex, :msg, subject, reply_to_subject, payload}

When the connection is down(closed by the server), all the subscribers receive a message {:nats_ex, :conn_down}

Publishing

For publishing to a certain topic, you can use pub/3 or pub/4 in NatsEx.Connection module. reply_to topic is optional.

:ok = NatsEx.Connection.pub(conn, "foo.bar", "This is a payload", "REPLY_SUBJECT")

Unsubscription

You can unsubscribe to a certain topic by using unsub/2 or unsub/3 in NatsEx.Connection module. You can also specify the number of messages, after which the subscriber will be automatically subscribed.

:ok = NatsEx.Connection.unsub(conn, "foo.bar", 10) # 10 is number of messages until unsubscription. This is optional

Installation

nats_ex is available on Hex. For installing, you can do this:

  1. Add nats_ex to your list of dependencies in mix.exs:
```elixir
def deps do
  [{:nats_ex, "~> 0.1"}]
end
```
  1. Ensure nats_ex is started before your application:
```elixir
def application do
  [applications: [:nats_ex]]
end
```

TODO

  • Authorization
  • TLS
  • Publish, Subscribe
  • Request, Reply
  • Nats Streaming

License

MIT License. Please see LICENSE.md for more details.