問題タブ [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.
nservicebus - NServiceBus 4.0 - メッセージの重複
NServiceBus は、単一のメッセージが複数のスレッドによって処理されないことを保証しますか?
私はこの前提で作業してきましたが、1 つのメッセージが同時に 2 回処理されたようです。
ハンドラーで非トランザクション処理を行うため、設定でDoNotWrapHandlersExecutionInATransactionScope
. これは、メッセージが 1 回だけ処理されるようにする NServiceBus の機能に影響しますか? 私が理解しているように、これはまさにそれが言うことを行い、トランザクションスコープでラップしませんか?
誰かが私のためにこれを片付けることができますか? 他に何が重複メッセージの問題を引き起こす可能性がありますか?
nservicebus - NServiceBus - ネストされた全二重シナリオ
私は NServiceBus を初めて使用し、NServiceBus サンプルを 2 日以上いじっています。Full Duplex メッセージング サンプルを確認しましたが、問題なく動作します。
しかし今、ネストされた全二重シナリオを実装しようとしています。
- 私のクライアント エンドポイント「A」は、サーバー エンドポイント「B」にメッセージを送信し、「B」からの応答を待ちます。
- 私のサーバー エンドポイント「B」は、サーバー エンドポイント「C」にメッセージを送信し、「C」からの応答を待ちます。
- サーバーエンドポイント「C」はサーバーエンドポイント「B」に応答し、
- サーバー エンドポイント「B」は、クライアント エンドポイント「A」に応答します。
サンプル コードからサーバー エンドポイントのコピーを作成し (もちろん、プロジェクト名と名前空間などを変更しました)、2 つのサーバー エンドポイントを持つようにしましたが、クライアント "A" からのメッセージはサーバー "B" まで到達し、公開に失敗しました。サーバー「C」に。私が得るのは、数回の再試行とその後の失敗だけです。
WARN NServiceBus.Faults.Forwarder.FaultManager [(null)] <(null)> - メッセージは FLR に失敗し、再試行のために SLR に渡されます: 4、MessageID=c07c5e38-f355-4f01-a67d-a30a011545a1。
ERROR NServiceBus.SecondLevelRetries.SecondLevelRetriesProcessor [(null)] <(null)> - SLR はメッセージ c07c5e38-f355-4f01-a67d-a30a011545a1 の問題を解決できず、エラー キューに転送されます
私の質問は、これが無効な NServiceBus シナリオであるかどうかです。そうでない場合、ここで何が欠けている可能性がありますか?
asp.net-web-api - タイムアウト インデックスが ravendb に存在しません
tl;dr:
- Web API サービスの実行速度が遅いため、ログを追加しました
- ロギングでタイムアウトが見つからないというエラーが表示される
- サーバー上に webapi プロジェクトの ravendb データベースが表示されませんでしたが、開発マシンにはあります
- raven は 8080 で実行され、実行されています
- プラットフォームインストーラー(昨日nservicebusからダウンロード)を介してnservicebusを再インストールしようとしました
- まだ同じ問題があります
- 展開を台無しにしたか、何らかの方法でクリーン インストールを行う必要があると思います
- webapi プロジェクトがタイムアウトを読み取るにはどうすればよいですか?
アルファ版に備えて、実稼働マシンでアプリケーションを動作させようとしています。
私たちのアプリケーションには、複数の Web API サイトと多くのサービス ホストがあります。
私が見ているエラーは、現在、本番環境の Web API ホストのみにあります。
これがしばらく繰り返されます。最終的に (約 2 分) エンドポイントはあきらめ、ただ死んでしまいます。
nservicebus の log4net ファイル アペンダーを有効にして、これらのログを取得し、Web API サービスで何が起こっているかを把握しています。
ホスト サービスは、開発マシンでは問題なく動作しますが、何らかの理由で、運用マシンでは非常に遅くなります。開発マシンではエラーは表示されません。実稼働マシンにライセンスがインストールされているため、期限切れのライセンスによって制限されているわけではありません。
奇妙なことに、開発マシンでは Web API プロジェクトのデータベースが表示されますが、運用マシンでは、インストールされたサービス ホストのみにデータベース エントリがあります。
私たちは約 18 か月間、この特定のアプリケーションの開発に携わってきました。nservicebus をインストールしたときに、タイムアウトがインストールされるように設定されていなかった可能性があります。ただし、プラットフォーム インストーラー (昨日ダウンロードしたもの) を実行しようとしましたが、まだタイムアウトが発生しません。サービスホストをインストールすると、タイムアウトがインストールされるはずですが、何らかの理由でタイムアウトが表示されないと思います。
この時点で、nservicebus と ravendb をアンインストールすることを考えていますが、クリーンな再インストールを行う方法がわかりません。
ここに私のglobal.asaxからのいくつかの関連する行があります
azure - Azure Service Bus Transport を使用した NServicebus でのトランザクション
特定のエンドポイントに、SQL Azure データベースに対して作業を行うメッセージ ハンドラーがいくつかあります (現時点では、まだローカルの SQL 2012 インスタンスを使用しています)。X と Y という 2 つのイベントを発行するコマンド ハンドラーがあります。同じエンドポイントに、X へのサブスクライバーと Y へのサブスクライバーがあります。これらのサブスクライバーは両方とも、内部で同じデータ アクセス コンポーネントを使用しており、それを Z と呼びます。依存関係インジェクションは、共有ではなく、呼び出しごとに設定されます。
コンポーネント Z は、カーテンの下で Entity Framework 6 を使用しています。私が抱えている問題は、データベースを開くだけで SqlException がスローされ、MSDTC エスカレーションについて不平を言うことです。
ハンドラーを TransactionScope.Suppress で一時的にラップしたところ、エラーが停止しましたが、もっと基本的なものが欠けていると思います。
エンドポイントを非トランザクションに設定するのは簡単ですか? トランスポート メカニズムとして Azure Service Bus を使用するように構成したので、これはうまくいくと思っていたでしょう。これを行うと、メッセージ ハンドラ内で例外がスローされた場合でも、NServiceBus は再試行しますか? (SLRの制限まで-質問の一部ではありません。冪等性の問題も理解しています)。