コールバックで交換名を使用しようとしていexchange_declare
ます。SelectConnection
Pika で非同期リクエスト用のアダプターを使用します。
私の考えは、最初に私のプログラムで交換、キュー、およびバインディングのリストを作成することです。次に、複数の交換とキューの宣言を Pika にディスパッチし、各バインディングに必要なキューと交換が DeclareOK メッセージを受け取るとすぐにバインディングを作成します。
これは、作成するバインディングと関連付けるために、コールバック内の交換とキューの名前を知る必要があることを意味します。
このようなもの:
print "Create A"
channel.exchange_declare(callback=on_exchange, exchange="exchangeA")
print "Create B"
channel.exchange_declare(callback=on_exchange, exchange="exchangeB")
def on_exchange(response):
# How do I know if this was exchangeA or exchangeB ?
print "Exchange declared"
print response
これにより、次の出力が得られます。これは、(予想どおり) 交換が最初に宣言され、コールバックが後でトリガーされることを明確に示しています。
Create A
Create B
Exchange declared
<METHOD(['method=<Exchange.DeclareOk>', 'channel_number=1', 'frame_type=1'])>
Exchange declared
<METHOD(['method=<Exchange.DeclareOk>', 'channel_number=1', 'frame_type=1'])>
response
タイプがpika.frame.Methodであることがわかりましたが、そこからどうすればよいですか? 交換は、おそらく順番に宣言されることが保証されていますか?