8.3. 共有サブスクリプションの作成
共有サブスクリプションとは、1 つ以上のメッセージレシーバーを表すリモートサーバーの状態のことです。このサブスクリプションは共有されているため、複数のクライアントが同じメッセージのストリームから消費できます。
クライアントは、受信者のソースに shared
機能を設定して、共有サブスクリプションを設定します。
共有サブスクリプションは、クライアントコンテナー ID とレシーバー名を組み合わせてサブスクリプション ID を形成することで一意に識別されます。複数のクライアントプロセスで同じサブスクリプションを特定できるように、これらに安定した値を指定する必要があります。shared
に加えて global
機能が設定されている場合、サブスクリプション識別に受信者名だけが使用されます。
永続サブスクリプションを作成するには、以下の手順に従います。
接続コンテナー ID を
client-1
などの安定した値に設定します。container = Container(handler) container.container_id = "client-1"
shared
機能を設定して、共有用の受信側ソースを設定します。class SubscriptionOptions(ReceiverOption): def apply(self, receiver): receiver.source.capabilities.put_object(symbol("shared"))
sub-1
などの安定した名前で受信側を作成し、ソースプロパティーを適用します。event.container.create_receiver(conn, "notifications", name="sub-1", options=SubscriptionOptions())
サブスクリプションからデタッチするには、Receiver.detach()
メソッドを使用します。サブスクリプションを終了するには、Receiver.close()
メソッドを使用します。
詳細は、shared-subscribe.py の例 を参照してください。