イベントバス
イベントバス
Section titled “イベントバス”オブザーバビリティのためにイベントをパブリッシュおよびサブスクライブします — ランタイムとアプリケーションのアクティビティを監視してそれに反応します。
local events = require("events")イベントのサブスクライブ
Section titled “イベントのサブスクライブ”イベントバスからのイベントをサブスクライブ:
-- すべてのorderイベントをサブスクライブlocal sub, err = events.subscribe("orders.*")if err then return nil, errend
-- 特定のイベント種別をサブスクライブlocal sub = events.subscribe("users", "user.created")
-- システムからのすべてのイベントをサブスクライブlocal sub = events.subscribe("payments")
-- イベントを処理local ch = sub:channel()while true do local evt, ok = ch:receive() if not ok then break end
logger:info("Received event", { system = evt.system, kind = evt.kind, path = evt.path }) handle_event(evt)end| パラメータ | 型 | 説明 |
|---|---|---|
system | string | システムパターン(“test.*“などのワイルドカードをサポート) |
kind | string | イベント種別フィルター(オプション) |
戻り値: Subscription, error
イベントの送信
Section titled “イベントの送信”イベントバスにイベントを送信:
-- order作成イベントを送信local ok, err = events.send("orders", "order.created", "/orders/123", { order_id = "123", customer_id = "456", total = 99.99})if err then return nil, errend
-- userイベントを送信events.send("users", "user.registered", "/users/" .. user.id, { user_id = user.id, email = user.email, created_at = time.now():format("2006-01-02T15:04:05Z07:00")})
-- paymentイベントを送信events.send("payments", "payment.completed", "/payments/" .. payment.id, { payment_id = payment.id, order_id = payment.order_id, amount = payment.amount, method = payment.method})
-- データなしで送信events.send("system", "heartbeat", "/health")| パラメータ | 型 | 説明 |
|---|---|---|
system | string | システム識別子 |
kind | string | イベント種別/タイプ |
path | string | ルーティング用のイベントパス |
data | any | イベントペイロード(オプション) |
戻り値: boolean, error
サブスクリプションメソッド
Section titled “サブスクリプションメソッド”チャネルの取得
Section titled “チャネルの取得”イベント受信用のチャネルを取得:
local ch = sub:channel()
local evt, ok = ch:receive()if ok then print("System:", evt.system) print("Kind:", evt.kind) print("Path:", evt.path) print("Data:", json.encode(evt.data))endイベントフィールド: system、kind、path、data
サブスクリプションのクローズ
Section titled “サブスクリプションのクローズ”アンサブスクライブしてチャネルをクローズ:
sub:close()| アクション | リソース | 説明 |
|---|---|---|
events.subscribe | system | システムからのイベントをサブスクライブ |
events.send | system | システムにイベントを送信 |
| 条件 | 種別 | 再試行可能 |
|---|---|---|
| 空のsystem | errors.INVALID | no |
| 空のkind | errors.INVALID | no |
| 空のpath | errors.INVALID | no |
| ポリシー拒否 | errors.INVALID | no |
エラーの処理についてはエラー処理を参照。