問題タブ [nservicebus]
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.
messaging - NServiceBus を使用してメッセージを購読するとどうなりますか?
NServiceBus を使用して特定の種類のメッセージの受信者としてサブスクライブする場合
私は実際に何をしていますか?メッセージの受信時に受信者タイプの特定のメソッドが呼び出されるように指定していますか? その場合、どのコンテキスト内でメソッドが実行されますか? 静的コンテキスト、または新しく作成された親クラス インスタンスのコンテキスト内で実行されますか?
wcf - NServiceBus は、一般的なクライアント通知と特定のクライアント通知に適していますか
WCF ベースのパブリッシュ サブスクライブ フレームワークのさまざまなオプションを検討しています。パブリッシャーとなる 1 つの WCF Web サービスと、サブスクライバーとして登録された 1000 のクライアントがあるとします。公開されたメッセージの中には、すべてのクライアントが関心を持つものもありますが、同時に、特定のメッセージを 1 人のクライアントに通知できるようにしたいと考えています。通知を受け取ると、クライアントは Web サービスで他の Web サービス メソッドを呼び出します。
NServiceBus はこの種のシナリオに適していますか? トランスポートに MSMQ を使用すると、クライアントがインストールされているすべての PC でキューを作成する必要があるということですか?
structuremap - nServiceBus と StructureMap の統合に関する問題
nServiceBus で StructureMap を使用しようとしています。
プロジェクト:
- GenericHost エンドポイントを使用してコマンド メッセージを送信します
- StructMapBuilder を使用して nServiceBus を構成します。
- シンプルな StructureMap レジストリ構成を使用
- IWantToRunAtStartup をサポートするスタートアップ クラス TestServer を使用します
- TestServer クラスには、TestManager クラスへの ctor 依存関係があります
- TestManager クラスには IBus への ctor 依存関係があります
ObjectFactory.WhatDoIHave() は、StructureMap がクラスの構築方法を知っていることを示しています。
実行すると、ビルドアップ エラーが発生します。nServiceBus が構成を上書きしているようですか?
IBus ctor 依存関係をイベント ハンドラーに追加すると、他の構成がすべて正常に表示されることに注意してください。
エラー:
エンドポイントの開始時に例外が発生しました。エラーがログに記録されました。理由: 'nSeviceBusStructureMapTest.TestServer' という名前のオブジェクトの作成中にエラーが発生しました: タイプ [nSeviceBusStructureMapTest.ITestManager] のインデックス 0 を持つコンストラクター引数によって表された満たされていない依存関係: タイプ [nSeviceBusStructureMapTest.ITestManager] の一意のオブジェクトが定義されていません: タイプ [nSeviceBusStructureMapTest. ITestManager]: オブジェクト [nSeviceBusStructureMapTest.TestServer] のコンストラクターで [miningServiceManage] パラメーターを配線するために、少なくとも 1 つの一致するオブジェクトが必要です
ソース:
何か案は?
wcf - WCF Per-Call Service と NServiceBus 相互運用に関するヘルプ/アドバイスが必要
クライアントにデータを提供すると同時にNServiceBusと統合されたWCF Per-Callサービスがあります。
すべてのステートフル オブジェクトは、カスタム サービス ホストに統合された UnityContainer に格納されます。
NServiceBus はサービス ホストで構成され、サービス インスタンスと同じコンテナーを使用します。
すべてのクライアントには、独自のインスタンス コンテキストがあります (Juval Lowy の本で、Durable Services に関する章で説明されています)。
バス経由でリクエストを送信する必要がある場合は、ある種のディスパッチャーを使用し、Thread.Sleep() を使用して応答を待ちます。サービスは呼び出しごとであるため、これは問題ありません。
しかし、バスからのメッセージについて少し混乱しています。そのサービスは、それらを処理してクライアントに提供する必要があります。株価などの一部のデータについては、ある種のステートフル オブジェクトを更新するだけで、クライアントが GetQuotesData() を呼び出したときに、このオブジェクトからデータを提供するだけです。しかし、新しい見積もりが追加されたなど、多数のサービス メッセージがあります。
現時点では、"Postman デーモン" =)) のようなものを実装し、このタイプのメッセージをインスタンス コンテキストに格納するというアイデアがあります。次に、クライアントは「GetMail()」を呼び出し、それらのメッセージを受信して解析します。問題は、NServiceBus メッセージが「インターフェイス ベース」であり、WCF 経由で渡すことができないため、抽象クラスから派生した型に変換する必要があることです。
この状況を処理する最善の方法がわかりません。
nhibernate - NServicebusメッセージハンドラーに複数のリポジトリーを挿入するにはどうすればよいですか?
私は以下を使用します:
スレッドローカルストレージに関する私の問題は、アプリケーションスレッド全体で同じセッションが使用されることです。これは、第1レベルのキャッシュがクリアされていないことを確認したときに発見しました。私が欲しいのは、IHandleMessages <>。Handleを呼び出す前に、新しいセッションインスタンスを使用することです。構造マップでこれを行うにはどうすればよいですか?メッセージモジュールを作成する必要がありますか?
nservicebus - リモート エラー キューを使用するように NServiceBus を正しく設定するにはどうすればよいですか?
エラー チェックの管理を容易にするために、リモート エラー キューを使用するように NServiceBus をセットアップしようとしています。これを行うと、NServiceBus.Host.exe の起動時に次のエラーが発生します。
2010-03-25 07:59:50,103 [1] エラー NServiceBus.Utils.MsmqUtilities [(null)] <(null)> - キュー error@C0NSERVICEBUS を作成できなかったか、その存在を確認できませんでした。処理は引き続き続行されます。System.Messaging.MessageQueueException: キューのパス名が無効です。System.Messaging.MessageQueue.ResolveFormatNameFromQueuePath (文字列 queuePath、ブール型 throwException) で System.Messaging.MessageQueue.Exists (文字列パス) で NServiceBus.Utils.MsmqUtilities.CreateQueueIfNecessary (文字列 queueName)
NServiceBus の構成設定は次のとおりです。
私が間違っていることではない場合、これは通常の予想される動作ですか?
asynchronous - NServiceBus - Web サービス経由で非同期に NSB を呼び出す方法
Web サービス ブリッジのサンプルに似たものを実現したいのですが、Web サービスからの応答を待ちたくありません。呼び出しを非同期にしたい。これを行う最善の方法は何ですか?
Process ではなく、Web サービス ブリッジを使用して ProcessAsync を呼び出す必要がありますか? または、Web サービス ブリッジを使用せずに、Global.Bus.Send を呼び出す Web メソッドを作成する必要がありますか?
前もって感謝します
c# - コンソール アプリケーションまたはサービスの負荷分散
したがって、ASP.NET Web アプリケーションの負荷を簡単に分散できます。2 つのサーバー間にロード バランサーを設定しましたが、Web サーバーがポート 80 で応答しない場合、要求を受信しません。
独自のアクションを実行する C# コンソール アプリケーションまたは Windows サービスに対してこれを行うための実績のある手法はありますか? ピアプロセスが生きているか死んでいるか、ハートビートを行うなどを知るためのフレームワークはありますか?
私はNServiceBusで少し実験してきましたが、特定の種類のアプリケーションでは、ほとんどの作業をイベントへの応答として実行すると、実際には Web アプリケーションのようになります。複数のプロセスでスケーリングと負荷分散が容易ですが、ほとんどの場合、通常、作業を開始する責任を負う「マスター」プロセスの概念が必要になるため、それは中途半端なソリューションのように感じます。
nservicebus - NServiceBusディストリビュータープロセスを使用する利点
FullDuplexサンプルでNServiceBusディストリビュータープロセスを使用する方法を記事「 NServiceBusディストリビューターを機能させる」から学びました。
ディストリビューターを使用するには、次のキューが必要です。
- MyClientInputQueue-単一クライアントの入力キュー
- distributiondatabus-メッセージを送信するディストリビューターのキュー
- distributioncontrolbus-ディストリビューターがその状態を保存するために使用するもの
- server1messagebus-最初のサーバーインスタンスの入力キュー
- server2messagebus-2番目のサーバーインスタンスの入力キュー
つまり、ディストリビューターでスケールアウトするには、別のサーバーでスケールアウトするたびに、新しいサーバーメッセージバスキューを指定する独立した構成ファイルが必要です。スケールダウンしたい場合は、痕跡の構成ファイルとキューが残っています。
ディストリビューターを使用しないテスト中に、サーバーの別のインスタンスを起動すると(デバッグ中にVisual Studioで[デバッグ]-[新しいインスタンスの開始]を選択するだけで)、新しいプログラムインスタンス(同じバイナリである)に気付いたため、これは不要のようです。同じ構成ファイルと同じ入力キューを持っている)は、最初のインスタンスとかなりうまく負荷分散しているようです。クライアントによって発行された場合、要求はサーバー間を行き来しているように見えます。
この負荷分散が効果的である場合、追加のリソース割り当てを必要とせずに、同じ高可用性入力キューを指す重複インスタンスを追加するだけでスケールアウトできることを意味します。それははるかに簡単でしょう!
では、ディストリビューターの利点は何ですか?
私の唯一の推測は、ディストリビューターが「ディストリビューターから作業を受け取るように構成されたワーカーノードを決して圧倒しないように設計されている」と述べているディストリビューターのドキュメントから来ています。各ワーカーのMsmqTransportConfigのNumberOfWorkerThreadsプロパティを使用して、ワーカープロセスが処理できる作業量を制御することはできませんか?
asp.net - ASP.NET Web アプリケーションでホストされている場合、NServiceBus がブロックされている
検索フォームに入力し、送信ボタンをクリックすると、nServiceBus 経由で検索パラメーターを含むメッセージが送信される単純な Web アプリケーションを作成しました。また、同じプロジェクトに (同じキューから) メッセージを取得するハンドラーがあります。何らかの理由で、メッセージが取得されるまで Web サーバー プロセスがブロックされますが、これには何か理由がありますか? メッセージ ハンドラにブレークポイントを設定すると、リクエストが完了する前にブレークポイントが壊れてしまいます...コードの続行を許可するまで、ブラウザがロックされます。ハンドラーがいつ起動されたかに関係なく、コントロールがブラウザーに戻ることを期待しています...
ありがとう、D.ニーマイヤー