問題タブ [easynetq]
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.
rabbitmq - すべてのサブスクライバーが完了したことをどのように知ることができますか?
キューに発行する予定のリクエストがたくさんあります。
いくつかの異なるサブスクライバー タイプがあり、それぞれが独自のラウンド ロビン プールにあります。
たとえば、Request1 はキューにプッシュされます
LoggingSubscriber1 と LoggingSubscriber2 はどちらも "LoggingSubscriber" サブスクリプション ID でサブスクライブするため、そのうちの 1 つだけが要求を受け取ります。
DoProcessSubscriber1、DoProcessSubscriber2、および DoProcessSubscriber3 などの他のグループがあります。
そして別の DoOtherProcessSubscriber1、DoOtherProcessSubscriber2
3 つのサブスクライバー (Logging、DoProcess、および DoOtherProcess) がすべて完了したことを知る何らかの方法が必要です。これにより、何らかのアクションを実行できるようになります。たとえば、すべての要求が完了したというメッセージをクライアントに送信するなどです。
このような回答をどのように集計しますか? 各サブスクライバーに応答オブジェクトをキューに入れることを考えていましたが、それらがすべて完了したことを知る方法はまだわかりません。
easynetq - FuturePublished メッセージの削除
将来の実行のためにメッセージをスケジュールするために使用する場合FuturePublish()
、EasyNetQ API には、メッセージがスケジューラーの SQL データベースで脱水状態になっている間にメッセージを削除できるものはありますか?
c# - RabbitMQ を使用して大きなファイルを複数のマシンに配布できますか?
私はネットワーク上のさまざまなマシンに多くのアニメーション/ビデオを送信するデジタル サイネージ会社で働いています。以前は、サーバー アプリ (コンテンツ管理システム) からコンテンツを再生するマシンにファイルを送信するために ftp を使用していました。
大きなファイルを送信するような環境でRabbitMQを使用することはできますか(一部のビデオはサイズがギガバイト以上になる場合があります)?ほとんどのファイルは非常に小さいですが、場合によっては大きなビデオを送信することもあります。
また、一部のプレーヤー マシンは後で追加されるため、キューイングは動的でなければなりません (つまり、プレーヤーを追加してコンテンツを送信できるようにします)。この方法で RabbitMQ を構成できますか? (私が見たデモでは、サーバーおよびクライアント アプリケーションが起動する前に、キューを事前に作成する必要があります)。
また、送信アプリがコンテンツをマシンに送信する前にログインする必要があるように、ファイルの送信を保護できますか (FTP のログインなど)。
.net - EasyNetQ - EasyNetQ.Topology.Queue
isExclusive
タイプ EasyNetQ.Topology.Queue のコンストラクターのパラメーターの使用について誰か説明してください。
注: このタイプは、高度な API を使用してキューを削除するためにインスタンス化する必要があります。
c# - MVC - WCF - RabbitMQ - Message Queue を介した Domain Event to Consumer の高速化または代替手段?
ドメイン駆動設計 境界のあるコンテキストを分離するためにイベントを渡す
MVC のユーザー アクションは、リモート (同じ LAN) イベント ハンドラーに渡されるイベントを生成する必要があります。
私がテストしたこと:
- MVC: サービス呼び出しを起動して忘れる (非同期) ->
- (IIS がホスト) データを収集してメッセージを入力する WCF ->
- EasyNetQ/RabbitMQ ServiceBus 経由で送信 ->
- イベントは、イベントとそのデータを処理するサブスクライバー (WCF サービス エンドポイントから初期化された DI コンテナーを使用) によって消費されます。
MVC側でループすることでサービスがかなり速く呼び出された場合にどのように機能するかを確認するためにいくつかのテストを行いました
MessageQueue 部分は、キューに送信され、同じ秒内にサブスクライバーによって受信されるタイムスタンプに基づいて高速です。WCF サービス呼び出しのループは非常に低速です。それらをループするのに数秒かかります。wsHttpBinding から netTcpBinding に切り替えて、WCF で serviceThrottling をいじってみました。
WCF は必須ではありませんが、別のイベント処理プロジェクト (パブリッシャー側) が有益であり、MVC アプリの別の場所に物理的に配置できるようです (負荷の軽減など)。このような状況で WCF はもっともらしいですか、または Windows サービスまたは他の自己ホスト型のコンソール アプリなどを使用するか、MVC のスレッドを使用してイベント データを生成する可能性がありますか、またはより良いシナリオがありますか? このタイプのイベント処理システムのベスト プラクティスは何ですか? 基本的に、エンド ユーザーが使用している UI の速度を落とさずにどこかで処理する必要があるため、イベント データを生成する何かがあれば有益であるように思われます。