問題タブ [masstransit]
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 - RabbitMQを使用したMassTransit:エラーキューの回復
これはおそらく非常に単純な答えですが、MassTransitのドキュメントやフォーラムで明確な解決策を見ていません。
RabbitMQのエラーキューに移動されたメッセージがある場合、それらを処理キューに戻すための最良のメカニズムは何ですか?また、そもそもなぜ彼らがそこに移動したのかについての組み込みのログはありますか?
rabbitmq - RabbitMQを使用したMassTransit:2番目のリクエスト/レスポンスでMTがタイムアウト
MassTransitとRabbitMQを使用した要求/応答シナリオの操作。単純な要求/応答を行う場合、それは複数回機能します。リクエストハンドラーでメッセージを公開すると、最初のリクエストで機能しますが、リクエストハンドラーが2番目のリクエストで呼び出されることはなく、タイムアウトになり、メッセージはサーバーキューに残ります。
何かが足りないようです。多分構成?
プロジェクトはhttps://bitbucket.org/joeyoung/enterprise-rabbitmqにあります
クライアント構成:
サーバー構成:
リクエストの送信:
リクエストの消費:
メッセージ:
c# - MassTransit でメッセージの受信順序を確保する方法
私は 3 つの状態を持つサガを持っています。初期、受信行数、完了 -
BofMessage (Bof = ファイルの先頭) を取得すると、Initial から RecomingRows に遷移します。BofMessage の後、多数の RowMessage を受け取ります。それぞれがフラット ファイル内の行を記述しています。すべての RowMessage が送信されると、EofMessage が送信され、状態が Completed に変わります。観察 -
これは機能しますが、BofMessage! の前に複数の RowMessage が受信される場合があります。これは、私が送信した順序とは関係ありません。これは、メッセージが受信され、最終的にエラーとしてカウントされることを意味し、最終的にそれらを書き出すデータベースまたはファイルからメッセージが失われる原因となります。
一時的な修正として、すべての公開を行うこのメソッドにスリープ タイマー ハックを少し追加します。</p>
これは 5 秒のスリープ タイマーであり、非常に醜いハックです。送信した順序でメッセージが届かない理由を誰かに教えてもらえますか? これらのメッセージがデフォルトで順序付けされていない場合、これらのメッセージが正しい順序で送信されるようにすることはできますか?
ありがとうございました!
便宜上、これはhttp://groups.google.com/group/masstransit-discuss/browse_thread/thread/7bd9518a690db4bbからクロスポストされていることに注意してください。
nhibernate - NHibernate 永続 IList に項目を追加する MassTransit Saga で良好なパフォーマンスを確保する方法
私は3つの状態を持つサガを持っています -
BofMessage (Bof = ファイルの先頭) を取得すると、Initial から RecomingRows に遷移します。BofMessage の後、多数の RowMessage を受け取ります。それぞれがフラット ファイル内の行を記述しています。すべての RowMessage が送信されると、EofMessage が送信され、状態が Completed に変わります。観察 -
これは、パフォーマンスが n の 2 乗であることを除けば機能します。NHProf で調査すると、各行が追加されると、行のリスト全体が次のようになることがわかります。
A) データベースから選択
B) データベースから削除
C) データベースに再挿入されます。
これは私には非常に悪い行動のようです。行を追加するために必要なことは、データベースに単一の行を追加することだけです! 追加操作は、文字通り、行リストで行っている唯一のことです。リストに 10,000 個のアイテムがある場合、これはスケーリングしません。
このサガをより健全なパフォーマンス動作にする方法を知っている人はいますか?
ところで-必要に応じてIListをマップする方法は次のとおりです-
ありがとうございました!
c# - RabbitMQ を使用した MassTransit - 受信元のアドレス
テスト環境で、RabbitMQ のアクティブ/アクティブ クラスターを構成しました。
ReceiveFrom("rabbitmq://cluster_machine_a/some_queue?ha=true") を指定して MassTransit を使用して接続します。
明らかに、これは特定のクラスタ ノードを利用しているため、フェイルオーバーは提供されません。
フェールオーバーが発生するように MassTransit にクラスタ ノードを通知する正しい方法はどれですか?
RabbitMQ のドキュメントでは、クライアントは従来のロード バランサーを使用してトラフィックを処理する必要があると示されていますが、これは RabbitMQ で機能しますか? (最後のセクション - http://www.rabbitmq.com/clustering.html )
msmq - マルチサブの MassTransit MSMQ Pub。RuntimeServices の準備はいつですか?
2 つのサブスクライバーを持つパブリッシャーで構成される簡単なテストをセットアップしました。これらはすべて、MSMQ と、ローカルの SQL Server データベースを使用する MassTransit (2.1.1) RuntimeServices を使用して単一のマシンで実行されます。
何が設定されているかを確認できるように、以下にバス設定コードを含めました。各コンポーネントを手動で個別に開始して、サブスクライバーが実行されていない場合に何が起こるかを調べています。
最初に 2 つのサブスクライバーを実行したため、キューとサブスクリプションがすべてセットアップされ、メッセージのサブスクライブを解除せずに両方を終了しました。次にパブリッシャーを単独で実行すると、キューに 400 個のメッセージができるだけ早くダンプされます。2 つのサブスクライバー キューで待機しているメッセージの数が異なることがわかります。
私の想定では、RuntimeServices が両方の送信先キューをセットアップできるようになる前に公開していると思います。バスのセットアップとパブリッシュの間に 5 秒の遅延があるため、両方のサブスクライバー キューで 400 のメッセージが待機していると予想されます。つまり、一部のメッセージが両方のキューにパブリッシュされませんでした。
私の質問はこれです。パブリッシャーの起動時に、サブスクライバーがデータベースに既に存在する状態で RuntimeServices の準備ができているかどうかを確認する方法はありますか?
これは発行元のコードです
サブスクライバーは次のように構成されています。
...そして 2 番目の加入者...
アドバイスをよろしくお願いします。
.net - 将来のMassTransitプロセスメッセージ
プロジェクトのRabbitMQを使用してMassTransitを評価していますが、メッセージの処理を特定の時間まで遅らせることができるようにしたいと考えています。
目的は次のとおりです。
- ユーザーが他のユーザーに影響を与えるいくつかのことを行う
- 影響を受けるユーザーに1時間後に通知するメッセージがバスに送信されます
- ユーザーはより多くのことを行い、より多くの通知を送信します
- 1時間が経過し、次のようになります。
- 最後の要約から1時間以上経過しています。メッセージが処理され、各ユーザーの保留中の通知がすべて収集され、少なくとも1つある場合は要約が送信されます。
- 最後の要約から1時間未満です。メッセージは処理されず、さらに1時間キューに入れられます。
重要なのは、多くのことを通知できるので、すぐに送信するのではなく、後で要約することです。これはMassTransitとRabbitMQで実行できますか?
c# - MassTransit/RabbitMQ の負荷分散アプリケーションからの競合するコンシューマー
Request/Response パターンを使用して、MassTransit/RabbitMQ 経由で API からのリクエストがバックエンド サービスに転送される API の作成を完了しました。現在、これを本番環境にプッシュすることを検討しており、アプリケーションの複数のインスタンス (API とサービスの両方) を異なるサービスで実行し、ロード バランサーがそれらの間でリクエストを分散することを望んでいます。
これにより、サーバーの 1 つが何らかの理由でプールから取り出された場合、すべてのメッセージを失う可能性があるという状況に陥ります。サーバー間でRabbitMQクラスターを作成しようとしています(各サーバーにはローカルインストールがあります)が、このインスタンスで競合するコンシューマーをどのようにセットアップするのか疑問に思っていました.
RabbitMQ または MassTransit はこれを処理して、1 つのコンシューマーのみがリクエストを受信するようにしますか、それともすべてのコンシューマーがリクエストを受信して応答を試みるようにしますか? また、RabbitMQ クラスターでは、MassTransit/RabbitMQ はノードの障害をどのように処理しますか?
c# - マストランジットでメッセージがサブスクライバーに到達しない
2つのプロジェクトを異なるプロセスで実行し、RMQを別のマシンにデプロイしています。
これが私の発行元コードです
これが私の加入者コードです:
サーバーには、次のサブスクリプションがあります。
パブリッシャーから一連のメッセージを送信すると、サブスクライバーに正常に到達するメッセージはごくわずかです。それらのほとんどはresponse-queue-errorに分類されます。
私はmasstransitを初めて使用し、その内部で何が起こっているのか理解できず、どうすればそれを理解できるのか理解できません。
この状況でお勧めできることはありますか?
appharbor - AppHarborとCloudAMQPを使用したクラウド内のMT
MassTransitをAppHarborとCloudAMQPで正常に動作させることができた人はいますか?
私はそれで時間のクマを持っています。
パブリッシャー(Webサイト)にメッセージを送信させていますが、サーバー(バックグラウンドワーカー)がメッセージを受信していないようです。
私が懸念していることの1つは、MTがrabbitmqスキームを必要とするのに対し、CloudAMQPはスキームをamqpに設定することです。
バスを構成するときにスキームを(amqpからrabbitmqに)交換していますが、メッセージのアドレスのスキームがrabbitmqであることに気付きました。これは、置き換えたので意味があります。しかし、サーバーがそれらを取得するために、それらがamqpである必要があるかどうか疑問に思っていますか?
これは私が送信した簡単なメッセージです。RabbitMQに届きましたが、サーバーはそれを取得していません。
ありがとう、ジョー
編集:URLでパスワードを指摘してくれたCarlに感謝します