問題タブ [rebus]
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.
rebus - T-SQLを使用してRebusメッセージをSQL Serverに挿入する
サードパーティ アプリケーションとの統合に Rebus を使用したいと考えています。そのアプリケーションのデータベースにトリガーを追加して、トリガーがデータベースの変更に関する情報を含む Rebus メッセージの形式でレコードを挿入するようにします (操作の種類: 挿入、更新、削除、テーブル名、行 ID)。これを簡単に行う方法があるか教えてください。または、 https://github.com/rebus-org/Rebus/blob/master/src/Rebus/Transports/Sql/SqlServerMessageQueueを調べて、自分でストアド プロシージャを作成する必要があります。 .cs送信方法?
または、トリガーからのパラメーターを使用してexeを起動することもできますが、トランザクションではありません。
また、この問題https://github.com/rebus-org/Rebus/issues/119を見てきましたが、それは死んだと思います。
多分他の推奨されるアプローチがありますか?
更新: Rebus メッセージの本文がシリアル化されていることに気付いたので、SQL でそれを行うのは正気ではありません (SQL-CLR なしでは不可能です)。おそらく唯一の方法は、ReceiveMessage メソッドを使用してカスタム トランスポートを作成し、自分でメッセージを受け入れることです。フォーマット?
前もって感謝します :)
sql-server - ReBus SQL Server コンシューマ ポーリング コントロール
私が理解しているように、ReBus のコンシューマーは、2 つのモードでメッセージのデータベースをポーリングします。メッセージが存在する場合は速く、一定期間利用できない場合は遅くなります。
これを調整する方法はありますか? また、それがどのように機能するかについて詳しく説明している場所はありますか?
私が見つけた唯一のことは、「キュー ポーリング バックオフ戦略を低レイテンシ モードに構成する機能が追加されました - hagbarddenstore に感謝します」です。
ありがとう!
c# - バス イベント内から SagaData インスタンスを取得する
私がしたい場所に MessageSent イベントを追加しようとしています:
メッセージが saga ハンドラーから送信されたかどうかを表示します。
サガ内にいる場合は、対応する SagaData インスタンスにアクセスします。
最初のポイントとして、MessageContext にキー "SagaContextItemKey" を持つ項目があるかどうかを確認する必要があることはわかっていますが、イベント内からサガ データ インスタンスを取得する際にかなり迷っています。それは可能ですか?
rebus - Rebus で順番に配信する必要があるメッセージの戦略
SQL Server との統合のために、XML シリアル化されたメッセージで Rebus SQLTransport を使用しています。メッセージは、SQL Server で行われた変更を表します。そのため、メッセージ配信の順序は不可欠です。
これは、たとえば、メッセージ 1 に、メッセージ 2 で (ID によって) 参照されるオブジェクトが含まれている可能性があるためです。別の例として、メッセージ 1 には、メッセージ 2 からの新しいオブジェクトを受け入れるために必要なオブジェクトの削除要求が含まれている場合があります。
メッセージはトリガーによって生成されるため、メッセージを 1 つのメッセージに集約するのは非常に複雑です。
メッセージの冪等性と 1 つのワーカーがあれば、エラーが発生してメッセージがエラー キューに移動された場合に機能しないという事実を除いて、機能すると思います。検証またはビジネス ロジックの例外が原因で、エラーが発生する可能性は十分にあります。そのため、メッセージの問題を解決できるのは人間だけであり、それまでは他のメッセージは配信されるべきではないと私は信じています。その場合どうするのがベストなのか、アドバイスをいただきたいと思いました。私が見た限り、再試行回数を無限に設定することはできないので、問題が人間によって解決されるまでハンドラー内でサービスを停止する必要がありますか?
前もって感謝します
rebus - Rebus - 遅延メッセージ、正確に 1 つのメッセージ ハンドラー
Rebus Service Bus が次のユース ケースを処理できるかどうか疑問に思っていました。
- 将来の日付のメッセージをキューに入れる
- Customer Id: 1000 のようなコンテキストを持つメッセージ ProcessInvoice がある場合、メッセージを実行するハンドラーを 1 つだけ持つことができます。そのため、メッセージが重複した場合、再度処理されることはありません。
ありがとう
publish-subscribe - Rebus は、同じ「メッセージ」値を持つ複数のエンドポイントをサブスクライブできません
Rebus を pub/sub プロトコルで使用できず、共有アセンブリからメッセージを発行する複数のエンドポイントにサブスクライブできない理由はありますか?
これで Rebus サブスクライバーを構成しようとすると:
で例外がスローされます
スローされる例外は次のとおりです。
これは私には少し奇妙に思えます。複数のパブリッシャーに Rebus サブスクライバーを持たせることは、完全に有効なユース ケースのように思えます。一部のパブリッシャーは、共通の POCO アセンブリを共有しています。
この背後にある理由は何ですか...そして(より重要なことに)Rebusでこれを達成する方法はありますか?
また、Rebus がこの例外をログに追加することを期待していました (私は log4net を使用しています) が、Rebus の構成時にスローされた例外はログに記録されないようです。これは間違いですよね?
msmq - Rebus は MSMQ over HTTP/HTTPS の使用をサポートしていますか?
次のようにサブスクリプションを構成しました。
しかし、バスが開始され、サブスクリプションが送信されると、次のようになります。
問題の 2 つのサーバーが、rebus の外部で HTTP/HTTPS を介して相互にメッセージを送信できることを確認しました。
rebus - BeforeTransportMessage イベントでトランザクションをコミットすることは可能ですか?
タイトルにあるように、BeforeTransportMessage イベントでトランザクションをコミットすることは可能ですか。たとえば、TransportMessage で特定のヘッダーが発生した場合、それを別のメッセージにラップして別の場所に送信し、Rebus のさらなる処理を停止できます。
そのイベントを使用した実際の例は見つかりませんでした。共有できるものはありますか?
前もって感謝します :)