問題タブ [pika]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Pika blocks_connection.py RabbitMQ への接続のランダム タイムアウト
私はマシン上でウサギのmqを実行しています
- クライアントと rabbitMQ の両方が同じネットワーク上で実行されている
- rabbitMQ には多くのクライアントがあります
- 私はrabbitMQからクライアントにpingを実行できます
- マシン間で測定された最長の遅延は 12.1 ミリ秒です
- ネットワークの詳細: 標準スイッチ ネットワーク (単一の物理マシンで実行されている仮想マシンのネットワーク - vmware VC を使用)
RPC 接続の初期化時にランダムなタイムアウトが発生する
/usr/lib/python2.6/site-packages/pika-0.9.5-py2.6.egg/pika/adapters/blocking_connection.py
問題は、タイムアウトが一貫しておらず、時々発生することです。
この問題を手動でテストし、同じマシンからblocking_connection.pyを1000回実行すると、タイムアウトは発生しません。
これは、失敗したときに表示されるエラーです:
手伝ってください
rabbitmq - ホスト名を特定するのに助けが必要
私は rabbitmq を初めて使用します。rabbitmq-server を 1 つの EC2 インスタンスにインストールしましたが、別の EC2 インスタンスにコンシューマーを作成したいと考えています。
しかし、私はこのエラーが発生しています:
ノードのステータスは次のとおりです。
そして、それは消費者コードです:
queue - そのキューのタイプを指定します
私はメッセージングシステムに非常に慣れていないので、http://www.rabbitmq.com/tutorials/で答えを見つけようとしていました.すべてのバインディング、キュー、エクスチェンジと混同されます。
それで、どのタイプの「キュー」を指定するかという質問に対する答えを探しています(これに他の言葉を使わなければならない場合は申し訳ありません)。プロデューサー側。より明確にするために、例を挙げます。
したがって、コンシューマーに 1 つの「キュー」をサブスクライブさせ、それを受信すると、このキューの内容に基づいて何らかの操作を実行するようにします。メッセージに画像が含まれている場合は何かを行い、テキストの場合は他のことを行います。
プロデューサーがペイロードに次のようなものを追加する必要があると考えていtype:foo
ましたが、消費者はこれを探しますtype
。しかし、これに対するより良い解決策があることを願っています。キューにヘッダーを追加するようなもの。
ありがとうございました。
python - RabbitMQ で遅延キューを作成するには?
Python、Pika、RabbitMQ で遅延 (またはパーキング) キューを作成する最も簡単な方法は何ですか? 同様の質問を見たことがありますが、Python についてはありません。
再度キューに入れる必要があるメッセージを抑制することができるため、アプリケーションを設計するときにこれは便利なアイデアだと思います。
処理しきれないほど多くのメッセージを受信する可能性は常にあります。HTTP サーバーが遅いか、データベースに負荷がかかりすぎている可能性があります。
また、メッセージを失うことをまったく許容できないシナリオで何か問題が発生したときに、処理できなかったメッセージを再キューイングすることで問題が解決する可能性がある場合にも、非常に役立つことがわかりました。また、メッセージが何度もキューに入れられるという問題が発生する可能性もあります。潜在的にパフォーマンスの問題を引き起こし、スパムをログに記録します。
python - コンシューマーを N 個の不明なキューにサブスクライブする方法は?
私はこれを行う方法を理解しようとしています:
一部のプロデューサーは、N 個のキューを作成します (たとえば、foo.1 foo.2 foo.3
)。ウサギの別の部分に 1 つのコンシューマーがあり、すべての N 個 (私の例では 3 ) のキューからメッセージを取得する必要があります。私はこのようなことができることを知っています:
しかし、私の消費者が名前を知らない場合、私が本当にやりたいことは次のようなものです:
python - RabbitMQ キュー間でメッセージを移動/マージすることは可能ですか?
メッセージをあるキューから別のキューに移動/マージできるかどうかを知りたいです。例えば:
main-queue
メッセージを含む['cat-1','cat-2','cat-3','cat-4','dog-1','dog-2','cat-5']
dog-queue
メッセージを含む['dog-1, dog-2, dog-3, dog-4]
問題は、(両方のキューが同じクラスター、仮想ホスト上にあると仮定して) メッセージを から に移動することは可能dog-queue
ですmain-queue
かrabbitmqctl
?
だから最後に私は次のようなものを取得しようとしています:
理想的には:
main-queue
:['cat-1','cat-2','cat-3','cat-4','dog-1','dog-2','cat-5', dog-3, dog-4]
しかし、これも大丈夫です:
main-queue
:['cat-1','cat-2','cat-3','cat-4','dog-1','dog-2','cat-5', 'dog-1, dog-2, dog-3, dog-4]
python - メッセージが確実に配信されるようにするにはどうすればよいですか?
Pikaでメッセージが確実に配信されるようにするにはどうすればよいですか? デフォルトでは、メッセージが正常に配信されなかった場合でもエラーは表示されません。
この例では、pika が接続がダウンしたことを確認する前に、いくつかのメッセージを送信できます。
python-2.7 - サブスクライブ中にファイルを書き込むコールバックを追加する方法
これはおそらく、ピカを使用するのと同じくらい Python コールバックに関する質問です。RabbitMQ のキューにサブスクライブし、配信されたメッセージのペイロードを処理し、そのペイロードを一連の (ディスク) ファイルに書き込むコードを開発しようとしています。そこで、 http://www.rabbitmq.com/tutorials/tutorial-one-python.htmlにある単純な「Hello World」の例を使用して、コールバック関数にロジックを追加しました (偶然にも「コールバック」と呼ばれます)。 ) を使用して、受信したメッセージ ペイロードをファイルに書き込みます。
主な問題は次のとおりです。特定の時間が経過した場合、たとえば 300 秒 (5 分) プロセスがファイルを閉じて新しいファイルを作成し、その後受信した新しいメッセージを書き込む追加のコードを書きたいと思います。それ。等々 ...
しかし、私が見ている問題は、メッセージがキューに到着したときにのみコールバック関数が呼び出されることです。そのコールバック関数の外に、経過時間を計測する何らかの処理が必要だと思います....
理論的根拠は、MQ キューで受信したメッセージを含む一連のディスク ファイル (タイムスタンプに基づいてすべてが一意の名前を持つ) を作成することです。メッセージの受信が遅い場合は、現在開いているファイルを閉じて (下流でさらに処理できるようにするため)、別のファイルを開きます。
また、消費開始呼び出し (channel.start_using) を発行した後、その下のコードに到達しないことにも気付きました-なぜですか?
私はpythonのマルチプロセッシングモジュールをいじってみましたが、今のところうまくいきません。
擬似コード コメント付きのスケルトン コードを次に示します:-
ありがとう !