nats-nerve

High level driver for nats-streaming-server.

Showing:

Popularity

Downloads/wk

111

GitHub Stars

2

Maintenance

Last Commit

3yrs ago

Contributors

1

Package

Dependencies

3

License

MIT

Type Definitions

Tree-Shakeable

No?

Categories

Readme

npm version codecov

nats-nerve

High level driver for nats-streaming-server.

Nerve makes sending and receiving messages easy. The example below demonstrates:

  • Creating a persistent connection to the Nats Streaming Server
  • Creating a subscription to a channel
  • Publishing a message to a channel
const { getInstance } = require('nats-nerve')
const SERVER = 'nats://127.0.0.1:4222'
const CLUSTER = 'test-cluster'
const APP_NAME = 'test'

async function test() {
  const nerve = await getInstance(SERVER, CLUSTER, APP_NAME)
  const subscription = nerve.subscribe('channel', message => {
    console.log(message.getData())
  })
  await nerve.publisher.publish('channel', 'Hello, World!')
}

test()

Durable Subscriptions

Nats Streaming Server will keep track of the messages that have been delivered to your client if you configure a durable subscription:

...
const opts = { durableName: 'keepers' }
const subscription = nerve.subscribe(channel, opts, message => {
  console.log(message.getData())
})
...

The subscription can be suspended:

await subscription.close()

Re-subscribing to a suspended (or closed) subscription picks up any undelivered messages. It is done simply by re-creating the durable subscription:

...
const opts = { durableName: 'keepers' }
const subscription = nerve.subscribe(channel, opts, message => {
  console.log(message.getData())
})
...

Durable subscriptions can be reset or discarded by unsubscribing:

...
await new Promise(resolve => {
  subscription.unsubscribe()
  subscription.on('unsubscribed', resolve)
})
...

Durable subscriptions have more delivery options. These should be specified on the options object passed to the subscribe function. They are:

OptionExample ValueDescription
startWithLastReceivedtrueSubscribe starting with the most recently published value
deliverAllAvailabletrueReceive all stored values in order
startAtSequence22Receive all messages starting at a specific sequence number
startTimenew Date(2016, 7, 8)Subscribe starting at a specific time
startAtTimeDelta30000Subscribe starting at a specific amount of time in the past (e.g. 30 seconds ago)

Groups (Clustered Clients)

Nats Streaming Server can send a message to a single client amongst a group. This can be done by configuring the subscription with a group like this:

...
const subscription = nerve.subscribe(channel, 'myGroupName', message => {
  console.log(message.getData())
})
...

About Nerve

I called it nerve because it passes messages like your nervous system. I thought this was really clever the first time that I thought of it: _N_ats _E_vent _R_eceptor, _V_alidator and _E_mitter.

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100
No reviews found
Be the first to rate

Alternatives

No alternatives found

Tutorials

No tutorials found
Add a tutorial