第8章 送信者と受信者
クライアントは、送信者と受信者のリンクを使用して、メッセージ配信のチャネルを表現します。送信者と受信者は一方向であり、送信元はメッセージの発信元に、ターゲットはメッセージの宛先になります。
ソースとターゲットは、多くの場合、メッセージブローカーのキューまたはトピックを参照します。ソースは、サブスクリプションを表すためにも使用されます。
8.1. オンデマンドでのキューとトピックの作成 リンクのコピーリンクがクリップボードにコピーされました!
メッセージサーバーによっては、キューとトピックのオンデマンド作成をサポートします。送信側または受信側が割り当てられている場合、サーバーは送信側ターゲットアドレスまたは受信側ソースアドレスを使用して、アドレスに一致する名前でキューまたはトピックを作成します。
メッセージサーバーは通常、キュー(1 対 1 のメッセージ配信用)またはトピック(1 対多のメッセージ配信用)を作成します。クライアントは、ソースまたはターゲットに queue または topic 機能を設定してどちらを優先するかを示すことができます。
キューまたはトピックセマンティクスを選択するには、以下の手順に従います。
- キューとトピックを自動的に作成するようにメッセージサーバーを設定します。多くの場合、これがデフォルト設定になります。
-
以下の例のように、送信者ターゲットまたは受信者ソースに
キューまたはトピック機能を設定します。
例: オンデマンドで作成されたキューへの送信
class CapabilityOptions(SenderOption):
def apply(self, sender):
sender.target.capabilities.put_object(symbol("queue"))
class ExampleHandler(MessagingHandler):
def on_start(self, event):
conn = event.container.connect("amqp://example.com")
event.container.create_sender(conn, "jobs", options=CapabilityOptions())
例: オンデマンドで作成されたトピックからの受信
class CapabilityOptions(ReceiverOption):
def apply(self, receiver):
receiver.source.capabilities.put_object(symbol("topic"))
class ExampleHandler(MessagingHandler):
def on_start(self, event):
conn = event.container.connect("amqp://example.com")
event.container.create_receiver(conn, "notifications", options=CapabilityOptions())
詳細は、以下の例を参照してください。