10
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Livebook 上で Zenoh の Pub/Sub 通信を体験してみる

Last updated at Posted at 2024-08-30

はじめに

SWEST 26 に参加してきました
(台風のため、泣く泣く現地参加を諦めオンライン参加)

セッション「すべてが #Zenoh になる 〜柔軟にして軽量〜」でハンズオンを受けたので、Livebook でも Zenoh を動かしてみました

登壇した高瀬さんのハンズオン資料はこちら

この記事で実装したノートブックはこちら

ブラウザ準備

Livebook を起動し、二つのウィンドウで新しいノートブックを開きます

通信結果が分かりやすいように上下に並べておきましょう

スクリーンショット 2024-08-30 14.40.15.png

この記事では上側の Publisher ノートブック、 下側を Subscriber ノートブックとして進めます

Publisher ノートブックのセットアップ

Publisher ノートブックのセットアップセルで以下のコードを実行します

Mix.install([
  {:zenohex, "~> 0.3"},
  {:kino, "~> 0.14"}
])

Zenohex は Elixir 用の Zenoh モジュールです

Kino は Livebook の UI/UX 用にインストールしています(Zenoh には不要)

セッションを開き、 Publisher を作成します

{:ok, session} = Zenohex.open()
{:ok, publisher} =
  Zenohex.Session.declare_publisher(session, "key/expression")

"key/expression" でキーを指定しています

Publisher と Subscriber で共通のキーを指定することで、 Pub/Sub 通信できます

Publish するメッセージを入力するためのテキストエリアを作ります

input = Kino.Input.textarea("MESSAGE")

表示されたテキストエリアに適当な値を入力しておきましょう

スクリーンショット 2024-08-30 15.12.12.png

次のセルにメッセージ送信のコードを入力し、実行はしないままにしておきます

message = Kino.Input.read(input)

Zenohex.Publisher.put(publisher, message)

Subscriber ノートブックのセットアップ

Subscriber ノートブックのセットアップセルで以下のコードを実行します
(Publisher ノートブックと同じ)

Mix.install([
  {:zenohex, "~> 0.3"},
  {:kino, "~> 0.14"}
])

セッションを開き、 Subscriber を作成します

{:ok, session} = Zenohex.open()
{:ok, subscriber} =
  Zenohex.Session.declare_subscriber(session, "key/expression")

declare_subscriber で Publisher と同じキーを指定しています

次に、受け取ったメッセージを表示するためのフレームを用意します

frame = Kino.Frame.new()

スクリーンショット 2024-08-30 15.15.43.png

次のセルにメッセージ受信のコードを入力し、実行しないままにしておきます

case Zenohex.Subscriber.recv_timeout(subscriber, 10_000_000) do
  {:error, :timeout} ->
    nil
  {:ok, msg} ->
    Kino.Frame.append(frame, Kino.Markdown.new(msg.value))
end

recv_timeout の第2引数はタイムアウトのマイクロ秒指定(10秒)です

Pub/Sub の実行

Subscriber ノートブックの最後のセルを実行した後、すぐに Publisher ノートブックの最後のセルを実行しましょう

メッセージが受信され、フレームに表示されます

zenoh.gif

まとめ

Zenohex を使うことで、 Zenoh による Pub/Sub 通信が実行できました

非常に軽量で高速ということなので、いろいろなことに使ってみたいと思います

10
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?