問題タブ [bunny]
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.
ruby-on-rails - RabbitMQ は、永久に有効なキューを大量に生成します
私の問題を解決するための助けをいただければ幸いです。
私は Rabbitmq を使用しており、生成されたキュー (amq.gen-pMJVWygd3iLb_buXp1oUyw のような名前) がたくさんあります。これらは耐久性があり、永久に残ります。
そのようなキューは、core.timeout を交換しますが、core.timeout を処理する必要があるキューもあります。
そのため、私はこの瞬間に立ち往生しており、このキューが生成される場所を見つけることができません。
rabbitmq - RabbitMQ の強制公開を待っていますか?
バニー (Ruby) で RabbitMQ を使用して、パブリッシュしたいのですが、ファンアウト交換から消費するキューがない場合、メッセージの損失を回避したいと考えています。私の図書館の観点から、私は返却を待って、メッセージが送信されたかどうかにかかわらずクライアントに明確な回答を与えるつもりです. これを達成する唯一の方法は、これで眠ることですか?
ruby-on-rails - 各パラメーターを明示的に言及せずに、yaml ファイルからコンストラクターにパラメーターを渡す方法は?
Bunny を使用して RabbitMq 接続を設定するための初期化スクリプトがあります。
の内容は次のconfig[Rails.env]
とおりです。
コマンドの詳細な構文はBunny.new
正しく機能します。ただし、冗長ブロックをコメントアウトして、次の構文を残すと:
次のエラー メッセージが表示されます。
どちらの場合もキーは同じなので、うまくいくと思っていました。各パラメーターを明示的に指定せずにコンストラクターを呼び出す方法はありますか?
"<<"=>nil
yaml ファイルから行を削除しようとしましたが、動作は変わりませんでした。
ruby - ruby の bunny によって生成され、rabbitmq に公開された大きなメッセージが base64 にエンコードされる理由
bunny gem を使用して、json 文字列であるメッセージを rabbitmq サーバーに公開しています。コードは次のとおりです。
ただし、rabbitmq サーバーから取得するのは、base64
. 公開するメッセージ(コード内の値)は 90000 サイズを超えています。すべての文字列をエンコード ツールにコピーして、乱雑な文字列を でデコードすることbase64
で解決します。公開されたデータは、角かっこ、コンマ、またはいくつかのキー/値がないため、切り捨てられているようです。
それで、ここに私の質問があります.rabbitmqに巨大なメッセージを公開することは提案されていませんが、なぜデータがbase64にエンコードされ、なぜ切り捨てられるのか.
何か案は?どうも。
rabbitmq - パターンに一致しない RabbitMQ トピック交換でメッセージをルーティングする
2 つのキューは、次のルーティング キーを使用してトピック交換にバインドされます。
ルーティング キー パターン マッチでバインドされたキュー A ルーティング キー パターン マッチ*.foo
でバインドされたキュー B*.bar
foo
メッセージでもメッセージでもないメッセージを受信する 3 番目のキューをこの交換に追加したいと思いbar
ます。このキューを#
ルーティング キーにバインドすると、必要なすべてのメッセージが自然に取得されますが、不要な と が含まfoo
れbar
ます。
NOT *.foo
パターンにパッチを当ててメッセージをルーティングする方法はありますNOT *.bar
か?
ruby-on-rails - ROR で Bunny 経由の TCP 接続を管理する
AWS でメッセージ キューイング システムを作成する方向に進んでいます。マイクロ サービスは、Bunny 経由で Rabbit MQ と通信します。取引所に接続して公開することはできますが、TCP 接続は一定時間 (20 秒だと思います) 後に切断されます。バニーは再接続を試み、正常に再接続します。
私の質問は、rabbit mq doco によると、毎回新しい TCP を開くのではなく、TCP 接続でチャネルを使用する必要があるということです。ROR で 1 つの tcp 接続を管理する最良の方法は何ですか? リクエストごとに 1 つの TCP を作成する必要がありますか?
ruby-on-rails - このrabbitmqコンシューマーコードはどこに置くことができますか?
bunnyを使用するこのコードは、rabbitmq キューに発行されたメッセージをリッスンし、メッセージが消費されるたびにビューにフラッシュ通知を表示する必要があります。コンシューマーは、同じアプリケーション内にありますが、プロデューサーとは別のセッションで実行されています。アプリケーションは、メッセージ受信者の電子メールを routing_key として使用する直接交換を使用します。current_user の電子メールに似たメッセージrouting_key
が公開されたときに、ページを更新せずにそのユーザーに新しいメッセージがあることを示すフラッシュ メッセージが表示されるようにしたいと思います。Facebook の通知と同様の動作が必要です。
プロデューサー コードは次のようになります。
コンシューマ コード: 次のようになります。
問題は、消費者コードをどこに置くべきかわからないことです。コードをメソッドとしてアプリケーション コントローラーに配置しようとしましたが、うまくいかないようです。これを改善する方法についての提案は大歓迎です。