6.2. クライアントの例
6.2.1. AMQ Online Python の例
次の AMQ Online Python の例を使用して、アプリケーションを AMQ Online に接続できます。この例では、myqueue
という名前の queue
タイプのアドレスを作成したと想定しています。
from __future__ import print_function, unicode_literals from proton import Message from proton.handlers import MessagingHandler from proton.reactor import Container class HelloWorld(MessagingHandler): def __init__(self, server, address): super(HelloWorld, self).__init__() self.server = server self.address = address def on_start(self, event): conn = event.container.connect(self.server) event.container.create_receiver(conn, self.address) event.container.create_sender(conn, self.address) def on_sendable(self, event): event.sender.send(Message(body="Hello World!")) event.sender.close() def on_message(self, event): print(event.message.body) event.connection.close() Container(HelloWorld("amqps://_messaging-route-hostname_:443", "myqueue")).run()
6.2.1.1. 階層トピックでサブスクライバーを作成する際の既知の問題
AMQ Online で階層トピックにサブスクライバーを作成すると、ブローカーが代わりに競合するコンシューマーとしてサブスクライバーを作成するという既知の問題が存在します (トピックではなくキューのようにアドレスを処理します)。
この問題の回避策として、ソースで トピック
ケイパビリティーを設定します。
手順
-
simple_recv.py
ファイルで、from proton.reactor import Container
を変更してReceiverOption
を追加します。
class CapabilityOptions(ReceiverOption): def apply(self, receiver): receiver.source.capabilities.put_object(symbol("topic"))
-
次の行を変更して、
options=CapabilityOptions ()
を追加します。
def on_start(self, event): event.container.create_receiver(conn, self.address, options=CapabilityOptions())