問題タブ [easynetq]

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.

0 投票する
2 に答える
5379 参照

ldap - RabbitMQ LDAP 認証の失敗

LDAP 承認を使用して RabbitMQ をセットアップするプロセスを進めていますが、うまくいきません... 知っている人は、見て、私が間違っていることを教えてください。次のコードを使用して、LDAP にクエリを実行し、ユーザー オブジェクトを取得できます。

設定試行 1

設定試行 2

設定試行 3

接続コード

私はいくつかの方法で接続しようとしています (すべて失敗しています):

内部データベースのフォールバック構成が機能しているため、guest問題なく接続できます。

ログ

「LDAP バインド エラー」、「handshake_error,starting,0」、「access_refused」について Google でよく調べましたが、正しい方向に導くことができるものは何も見つかりません。

どんな助けでも大歓迎です。

0 投票する
1 に答える
2458 参照

c# - EasyNetQ for RabbitMQ を使用する場合のカスタム エラー キュー名は?

未処理の例外をEasyNetQ_Default_Error_Queueに入れるのではなく、特定のアプリケーションに使用する必要があるエラー キューの名前を明示的に指定できる方法があるかどうか疑問に思いまし

通常のメッセージ キュー名を指定する方法はわかりますが、エラー キュー名については何も見つけることができませんでした。

0 投票する
1 に答える
3049 参照

c# - EasyNetQ でメッセージをパブリッシュし、バスが切断されるとどうなりますか?

現在調査中ですが、質問させてください。回答がない場合は、わかり次第回答を投稿します。

問題は次のとおりです。

アプリケーションは、RabbitHutch.CreateBus を呼び出して IBus/IAdvancedBus のインスタンスを作成し、RabbitMQ にメッセージを発行します。インスタンスは返されますが、IsConnected フラグは false に設定されます (つまり、接続の再試行はバックグラウンドで行われます)。アプリケーションが特定の要求を処理すると、IAdvancedBus.PublishAsync が呼び出され、バスがまだ接続されていないときにメッセージが発行されます。大きな負荷がかかると、バスが RabbitMQ に接続できなかったため、アプリケーションへのリクエストがタイムアウトしてしまいます。

リクエストの処理中に RabbitMQ への接続が失われると、同じ動作が観察されます。

質問は:

バスが切断されている間、EasyNetQ はどのようにメッセージをパブリッシュしようとしますか?

接続が確立されるまで、メッセージはメモリのキューに入れられますか? もしそうなら、制限に達した後にメッセージを破棄していますか? これは構成可能ですか?

それとも、バスが強制的に RabbitMQ に接続しようとしているのですか?

それとも、メッセージを完全にダンプしていますか?

PublisherConfirms は、動作に影響を与えるように切り替えられていますか?

0 投票する
1 に答える
72 参照

c# - DI/StructureMap を使用したデータベースの切り替え

キューでメッセージをリッスンし、そのメッセージを処理するアプリケーションがあります。

これまで、顧客ごとにアプリケーションの個別のインスタンスをインストールし、構成ファイルに独自のデータベース接続文字列を設定してきました。これは、アプリケーションの更新に関しては苦痛になりつつあります。

現在、これをリファクタリングしようとしているので、必要なすべての接続文字列を備えた 1 つのインスタンスをインストールでき、ランタイム パラメータ (たとえば message.Client) に応じてデータベースを切り替えることができます。

これは手で配線すれば大丈夫なのですが……。

...しかし、DIコンテナを使用してこれを達成し始める方法を理解するのに苦労しています。

私が読んだことから、コンストラクターパラメーターを StructureMap で使用できることがわかります。例えば:

...しかし、いつ/どのように someValueAtRunTime を設定する必要があるのか​​\u200b\u200bわかりません。何を試しても、スレッドセーフであるか疑問に思います。

どんな助けでも感謝します。

0 投票する
0 に答える
491 参照

c# - EasyNetQ による消費障害の検出

別の排他的なコンシューマーによって既にロックされているキューから消費を開始すると、エラーがログに記録されていることがわかりますが、消費メソッドによって例外がスローされません。はExclusiveConsumer10 秒ごとに消費を開始しようとし続けますが、これは素晴らしいことですが、開始されていないときに (コードから) チェックしたいと思います。

消費に失敗しました。queue='Queue1'、consumer tag='cb439965-72d4-4d52-a248-91077b796703'、message='AMQP 操作が中断されました: AMQP 終了理由、ピアによって開始されました、code=403、text="ACCESS_REFUSED - キュー ' 1' 仮想ホスト '/' を排他的に使用", classId=60, methodId=20, cause='

Consumerコードを変更せずにステータスを検出する方法はありますか?

0 投票する
1 に答える
2469 参照

rabbitmq - easynetQ の応答/要求の遅延により、タイムアウトが発生しました

サーバー (Windows Server 2008) で EasyNetQ の要求/応答パターンを使用しているときに問題が発生しました。現時点では、ローカルで再現することはできません。

セットアップでは、EasyNetQ の要求/応答パターンを介して接続された 2 つの Windows サービス (テスト用のコンソール アプリケーションとして実行) があります。これは、要求がタイムアウトするまで要求側が応答を「消費」しないサーバーで、最近まで期待どおりに機能していました。

EasyNetQ のコンソール ログを含むペーストビンへの 2 つのリンクを含めました。これにより、問題がもう少し明確になることを願っています。

リクエスト側

応答側

それに加えて、私のリクエストコードは次のようになります。

そして応答側で:

私が言ったように、要求側は期待どおりに要求を送信し、応答側はそれを消費/キャッチします。これは正常に機能しますが、応答側が処理を完了して応答すると (メッセージは RabbitMQ 管理で確認できます)、要求がタイムアウトになるまで、要求は応答を消費/キャッチしません (デフォルトのタイムアウトは 10 秒です。同様に 60 秒に設定してみましたが、違いはありません)。これは、RequestSide に表示されるように、上記のリンクのログでも明らかであり、以前にタイムアウトした応答キューから 5 つほどのメッセージが受信されています。

処理に時間がかかりすぎて何かが台無しになった場合に備えて、RespondAsync を使用してみましたが、役に立ちませんでした。RespondAsync と RequestAsync の両方を使用してみましたが、すべてがさらに台無しになりました (おそらく、リクエストで何か間違ったことをしていたのでしょう :))。

何かが欠けているかもしれませんが、ここから何を試したらよいかわかりません。

編集:何かを台無しにしたことに気づきました。以下のコンテキストを追加するだけでなく、

要求/応答に使用される IBus が作成され、Ninject で注入されます。

そして、それはすべて、Topshelf と Ninject を使用して構築されているサービスによって次のように結び付けられています。

Topshelf のセットアップはすべてかなり徹底的にテストされており、意図したとおりに機能し、要求/応答の問題には実際には関係ありませんが、もう少しコンテキストを提供すると思いました.

0 投票する
2 に答える
509 参照

c# - キューごとのメッセージ レートを取得するための EasyNetQ.ManagementClient

ウサギの統計を取得するために EasyNetQ.ManagementClient nuget パッケージを使用しています。Web 管理では、キューごとのメッセージ レートを確認できます。ここに画像の説明を入力

しかし、EasyNetQ.ManagementClient を使用する場合、コード内のキューだけで同じレートを取得することはできません。それらを取得することは可能ですか?

前もって感謝します