nats
natsモジュールは、JSHアプリケーション用のNATSクライアントを提供します。
mqttモジュールと同様にイベント駆動で動作し、Clientの作成時に自動的に接続を開始します。
一般的な使用方法は以下のとおりです。
const nats = require('nats');Client
NATSクライアントオブジェクトです。
作成
new Client(options)オプション
| オプション | 型 | 説明 |
|---|---|---|
servers | String[] | nats://127.0.0.1:4222などのNATSサーバーURLの一覧 |
name | String | 接続名 |
user | String | 認証ユーザー |
password | String | 認証パスワード |
token | String | 認証トークン |
noRandomize | Boolean | サーバーのランダム選択を無効化 |
noEcho | Boolean | 自身が発行したメッセージのエコーを無効化 |
verbose | Boolean | verboseプロトコル動作を有効化 |
pedantic | Boolean | pedanticプロトコル検査を有効化 |
allowReconnect | Boolean | 再接続を許可 |
maxReconnect | Number | 再接続の最大試行回数 |
reconnectWait | Number | 再接続の待機時間(ミリ秒) |
timeout | Number | 接続のタイムアウト(ミリ秒) |
drainTimeout | Number | drainのタイムアウト(ミリ秒) |
flusherTimeout | Number | フラッシュのタイムアウト(ミリ秒) |
pingInterval | Number | pingの間隔(ミリ秒) |
maxPingsOut | Number | 応答待ちのpingの最大数 |
retryOnFailedConnect | Boolean | 初回接続の失敗時に再試行 |
skipHostLookup | Boolean | ホスト検索の最適化をスキップ |
使用例
| |
プロパティ
config
client.configは、解析済みのネイティブNATS設定を提供します。
代表的なフィールドは以下のとおりです。
serversnameallowReconnectmaxReconnectreconnectWaittimeout
console.println(client.config.servers);
console.println(client.config.timeout);メソッド
publish()
サブジェクトにメッセージを発行します。
構文
publish(subject, message[, options])パラメーター
subjectStringmessageString|Uint8Array|Object|ArrayoptionsObject(省略可能)
対応するoptionsのフィールド:
| オプション | 型 | 説明 |
|---|---|---|
reply | String | 要求・応答方式で使用する応答サブジェクト |
ObjectとArrayは、発行前にJSONにエンコードします。
戻り値
なし。結果はpublishedまたはerrorイベントで通知します。
subscribe()
サブジェクトを購読します。
構文
subscribe(subject[, options])パラメーター
subjectStringoptionsObject(省略可能)
対応するoptionsのフィールド:
| オプション | 型 | 説明 |
|---|---|---|
queue | String | キューサブスクリプション用のキューグループ名 |
戻り値
なし。結果はsubscribedまたはerrorイベントで通知します。
close()
クライアント接続を閉じます。
構文
close()イベント
open
接続が完了すると発生します。
client.on('open', () => { ... })message
購読したメッセージを受信すると発生します。
client.on('message', (msg) => { ... })msgのフィールド:
| プロパティ | 型 | 説明 |
|---|---|---|
topic | String | MQTT形式のハンドラーとの互換性のためのサブジェクトの別名 |
subject | String | NATSサブジェクト |
reply | String | 要求・応答処理で使用する応答サブジェクト |
payload | String | メッセージのペイロード |
subscribed
サーバーが購読を受け付けると発生します。
client.on('subscribed', (subject, reason) => { ... })subjectStringreasonNumber
現在の実装では、購読成功時に1を使用します。
published
発行リクエストが完了すると発生します。
client.on('published', (subject, reason) => { ... })subjectStringreasonNumber
現在の実装では、発行の成功時に0を使用します。
error
接続、購読、発行の失敗時に発生します。
client.on('error', (err) => { ... })errError
close
close()を呼び出すと発生します。
client.on('close', () => { ... })基本的な発行・購読の例
| |
要求・応答の例
要求・応答処理では、応答サブジェクトを先に購読し、options.replyを指定して発行します。
| |
動作に関する注意
Clientは、コンストラクターで自動的に接続を開始します。- キューサブスクリプションは、
subscribe(subject, { queue: 'workers' })で使用できます。 - 接続が開く前に
publish()またはsubscribe()を呼び出すと、errorイベントが発生します。 - 現在の実装では、メッセージのペイロードは文字列で提供されます。
最終更新日