問題タブ [nservicebus4]
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.
nhibernate - NServiceBus 4.6.5 NHibernate Saga Persister が Saga データを永続化しない
私はNHibernateでNServiceBusを使用しており、独自のプロセスでバスをホストしています。私が使用している構成は次のとおりです。
と:
この構成により、SQL Server データベースに、サガで指定したフィールドを使用してサガのテーブルが作成されます。これは素晴らしいことです。
しかし、Saga が実行されて完了すると、NServiceBus はレコードを saga テーブルに挿入していないように見えます。
テーブルはありますが、データはありません。
これは予想されるべきですか?サガが正常に完了した後、NServiceBus は永続的にサガ エントリを削除しますか?
testing - インメモリ NServiceBus を使用したテスト
ソリューションで高レベルのテストを作成しようとしていますが、バスに送信されたメッセージを「キャッチ」したいと考えています。
これが私がすることです:
- nUnit [SetUp] は、IISExpress で WebAPI プロジェクトをスピンアップします
- SetUp はバスも作成します。
- HTTP リクエストを API に送信する
- 確認したいことは何でも確認する
テスト全体の WebAPI 部分は正常に動作します。バスの作成とキックオフも素晴らしいようです。偽のメッセージ ハンドラも検出されます。問題は、ハンドラーがキューからコマンドを受信せず、RabbitMQ キューに永久に留まることです。
バスの構成方法は次のとおりです。
NServiceBus の起動時のログを見ると、偽のハンドラーがコマンドに関連付けられていることがわかります。
したがって、メッセージが正しい RabbitMQ キューに到達するのを見て、ハンドラー ポイントが正常に機能するまではすべてが正常であると想定しています。
[TearDown] に待機を入れてみたので、バスがもう少し長生きします - ハンドラーがメッセージを受信する時間を与えることを望んでいます。また、interactoin の消費者部分のメモリ内バスを新しいスレッドにスピンオフしようとしましたが、うまくいきませんでした。
他の誰かがこれを試しましたか?
これは最初のステップにすぎません。私がやりたいことは、送信されるメッセージを記録する偽のバスを作成することです。RabbitMQ の必要性は、自分自身を動かすことだけです (私のソリューションの境界は、前面の WebAPI と背面のバスです)。
乾杯
nservicebus - NServiceBus でデータベースによってトリガーされるイベントを発生させるための推奨されるアプローチは何ですか? SQL Service Broker との直接統合はもはや実行できませんか?
私のチームは現在、多数のカスタム アプリケーション間の統合を促進するために、多数の異なるコンテキストで NServiceBus (v4、場合によっては v5) を使用して実装を設計する初期段階にあります。ただし、NServiceBus を利用して、市販のサードパーティ システムからトリガーされるビジネス イベントを発生させたいと考えています。これらのシステムは固有のメッセージングまたはイベント API を提供しないため、現在の考えでは、トリガーを使用して基盤となるデータベースにフックし、場合によっては SQL Service Broker を NServiceBus へのブリッジとして使用することを考えています。
ServiceBroker.netを見てきましたしかし、それはまったく新しい ITransport を作成することによって、NServiceBus v2 または v3 api のインターフェイスなどを使用しているようです。ただし、より新しいバージョンの NServiceBus を使用する予定であるため、これは確実なオプションではないようです。SO に関するその他のやや類似した質問 (すべて数年前のもの) には、単純に SQL トランスポートを使用するためのガイダンスが表示されているようです。これは MSMQ の代わりにテーブルベースの疑似キューを使用しますが、明確でないのは、SQL トリガーで NServiceBus メッセージ レコードを手作りし、それらを手動で疑似キュー テーブルに直接 INSERT することが望ましいかどうか、またはまだ存在するかどうかです。途中でSQL Service Brokerを使用して、NServiceBusメッセージをよりネイティブにバスにポップします。そして、どういうわけか SQLTransport を使用することが答えである場合、
数年前に SQL Service Broker を NServiceBus に橋渡しする動きがあったようですが、ネイティブの NServiceBus SQLTransport が導入されると廃止されました。ループ ポーリング設計よりもリアルタイムな設計でデータ駆動型イベントを生成するための最新の NServiceBus アプローチに関して、何かが欠けているように感じます。
nservicebus - NServiceBus での Sql Server Transport の制限は何ですか?
VideoStore.NHibernate
MSMQ ではなくNServiceBus サンプル ( Githubから) を動作させようとしています ( SqlServerTransport
MSMQ にも RavenDb にも依存したくありません)。
次のようにして、このサンプルを MsmqTransport ではなく SqlServerTransport を使用するように切り替えました。
- NserviceBus.SqlServer に適切な NuGet パッケージを追加する
- 各 app/web.config に適切な接続文字列を追加する
これらの新しい設定でサンプルを実行すると、NServiceBus.ExtensionMethods
静的クラスに、 SqlServerTransport に切り替えたときにSetMessageHeader
スローされるメソッドが呼び出されていることがわかります。InvalidOperationException
SqlServerTransport
メッセージヘッダーをサポートしていないということですか?
私たちの決定に関連して、SQL Server トランスポートでサポートされていないものは他にありますか?
利用可能な機能/トランスポート マトリックスはありますか?
アップデート:
わかりました、多分私はここで銃を飛ばしました。https://github.com/Particular/NServiceBus.SqlServer.Samplesは、SqlServerTransport がメッセージ ヘッダーと Sagas をサポートしていることを示唆しているようです。
アップデートⅡ
永続性 (NHibernatePeristence) とトランスポート (SqlServerTransport) の両方に同じデータベースを使用すると問題が発生するようです。役割ごとに別々のデータベースを使用することで、問題が解決したようです。
機能のサポートに関して、SqlServerTransport を使用することに何らかの欠点があるかどうかを知りたいですか?
.net - 1 つの EndPoint に対して 1 つの NServiceBus.Host を使用する場合、推奨されるアプローチは何ですか
オンライン ドキュメントを参照して、NServiceBus を理解しようとしています。頭を包み込めないのは、インフラストラクチャの全体的な推奨設定です。私たちのアプリは、単一のマシンと複数の (論理的に異なる) サイト (n 店舗 - 1 本社) の両方で実行できるはずです。NServiceBus (NuGet 経由で v5 を使用しています) については、ホストとエンドポイントの概念を完全には理解していません。
15 個のサービス (注文サービス、アイテム サービスなど) があるとします。
15 個のクライアント(バスを介してメッセージを送信するコードを含む 15 個のクラス ライブラリ プロジェクト) と 15 個のサーバー(サービス固有のメッセージ/コマンドを処理する 1 つ以上の受信メッセージ ハンドラー クラス) が必要ですか? だから合計30。
各サービスは独自の個別の MSMQ を使用する必要がありますか?
これらの 15 個の「サーバー」プロジェクトの場合、実稼働環境では NServiceBus.Host を 15 回インストールする必要があります (したがって、15 個の Windows サービス インスタンスを作成します)。VS でのデバッグ中に、デバッグを開始すると NSerivceBus.Host.exe が開始されます。
したがって、各ホスト/サーバー プロジェクトに対して 1 つのエンドポイントのみを効果的に「ホスト」します。または、単一のホストとその内部に 15 のエンドポイントを持つことはできますか?
私がこの ESB パターンを初めて知ったので、ご意見をお寄せいただきありがとうございます。
.net - NServiceBus で SimpleInjector を使用して IBus Bus プロパティを注入する
独自の依存性注入コンテナーを使用してNServiceBus 5と、選択したコンテナーであるSimpleInjectorに慣れようとしています。
NServiceBusに注入するように指示する方法があります
IBus バス {get;set;}
NServiceBusControllerActivator
カスタムandを使用して、プロパティをすべての ASP.NET MVC ApiControllers (または他の場所) に追加しますNServiceBusDependencyResolverAdapter
。
ただし、SimpleInjector を使用したいのですが、MVC アプリケーションはありません。Bus をコントローラーに直接挿入したくありません。コントローラは軽量である必要があるため、ロジックは「サービス」内にあり、次に を呼び出しますBus.Send(message)
。
Bus
SimpleInjector を使用してプロパティを注入するにはどうすればよいでしょうか? 人々がNServiceBus で SIMpleInjector を構成しようと
したことは知っていますが、それらは一緒に動作しません。
msmq - NServiceBus が自動的にキューを作成しない (MSMQ)
NServiceBus Web サイト ( http://docs.particular.net/samples/step-by-step/ ) の例を実行しています。Visual Studio で実行すると、すべてが機能し、キューが自動的に作成されます (削除しても)。自動的に作成されるよりもソリューションを再実行してください)。開発マシンは Windows 8 を実行します。
エミュレートされた Windows 2008 RC2 を使用しています。ソリューションの bin フォルダーをサーバー コンピューターに移動して NServiceBus.Host.exe を実行しようとすると、最終的にクラッシュし、その理由は次のとおりです。操作を実行してください」 - 管理者権限で実行した場合でも。キューを見ると、キューが作成されていないことがわかります。キューを手動で作成すると、機能します。
別のマシンで実行すると、キューが自動的に作成されないのはなぜですか?
アップデート
実行するNServiceBus.Host.exe /install
と、キューが作成され、Windows サービスとしてインストールされます。しかし、私がやりたいのは定期的に実行することです。exe を実行しただけの場合、自己ホスト型と見なされますか?