問題タブ [netmsmqbinding]
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.
c# - キューに入れられた WCF メッセージが静かに消えるのはなぜですか?
サーバー THOR でトランザクション MSMQ キューをセットアップしています。次のコードを使用して、ワークステーションからそのキューにメッセージを投稿できます。
ただし、WCF を使用して接続しようとすると、メッセージがキューに表示されません。私が使用している構成は次のとおりです。
そしてコード:
いかなる種類の例外も発生しませんが、THOR のキューに投稿されたメッセージはありません。何か案は?黙って失敗するだけなので、これをデバッグする方法さえわかりません。
アップデート
MSMQ URI を「net.msmq://localhost/private/myqueue」に変更すると、セットアップしたローカル トランザクション キューに送信されます。キュー自体のセットアップは同じです (同じ手順を実行して、localhost キューと THOR キューの両方を作成しました)。
.net - netmsmqbinding が双方向バインディングを実行できないのはなぜですか?
WCF と netmsmqbinding を使用していますが、次のエラー メッセージが表示されます。
コントラクトには TwoWay (要求と応答または二重) が必要ですが、バインディング 'NetMsmqBinding' はそれをサポートしていないか、サポートするように適切に構成されていません。なんで?
私の環境はwindow2003サーバーです。wcf サービスは、ウィンドウ サービスとしてホストされています。よろしくお願いいたします。
wcf - WCFを使用してMSMQキューに直接送信するには
さまざまなMSMQからメッセージを取得するWindowsサービスがあります。このサービスは、キューからメッセージを取得し、メッセージの送信元のキューに基づいて特定のワークフローを実行します。エンドポイントからのメッセージを受け入れてキューに入れるようにWCFサービスを構成することは可能ですか?サービスに複数のエンドポイントを持たせたいのですが、メッセージを受信したエンドポイントに応じて、メッセージは別のキューに配置されます。私はnetMsmqBindingについてのことを見てきましたが、これまでのところ、これが私が考えている用途のためのものであるかどうかを判断することはできませんでした。
どんな助けでもありがたいです、
マイク
wcf - netMsmqBinding を使用してメッセージを読み取る WCF Msmq の問題
Msmq<string>
メッセージをキューに追加するために使用しているnetMsmqBindingを使用するWCFサービスがあります。メッセージは正常に追加され、コンピューター管理コンソールを介してキューに表示されます。
キューからメッセージを取得しようとしている別の WCF サービスがあります。ここで問題が発生しています。メッセージがキューに追加されるたびにサービスのメソッドが呼び出されます (そのビットは正常に動作しています) が、Msmq<string>
メッセージにはすべて null 値が含まれているようです。
そこからメッセージを取得する方法がわかりませんMsmq<string>
。これが私のサービスの詳細です...どんな助けにも感謝します..
wcf - net.msmq エンドポイントのコントラクトを実装する WCF サービス オブジェクトは、net.tcp エンドポイントのコールバック コントラクトも実装できますか?
MSMQ ベースの WCF PubSub を実装しようとしています。net.msmq が一方向であることは理解しています。ただし、基になるキューから読み取るための net.msmq エンドポイントと、リスナーがコールバックでサブスクライブするための net.tcp エンドポイントを実装するために単一のサービス オブジェクトを使用すると、一方向 vs.双方向、DuplexChannelFactory、DuplexClientBase など。
これを実装する唯一の方法は、net.msmq キュー読み取りサービスを net.tcp パブリッシャー サービスのクライアントにし、メッセージをパブリッシュするのではなく、新しいメッセージがキューから読み取られたときにパブリッシャーに通知することです。内部のサブスクライバーに。または、レシーバーで net.msmq を使用せず、代わりに単純な古い MessageQueue オブジェクトを使用するようにします。
wcf - MSMQからWCFWebサービスへのログバッファリング
私の手には興味深い状況があります。数年前から、ロギングに使用するネットワーク上のIISボックスで実行されるWCFサービスがあります。アプリケーションはbasicHttpBindingを使用してログメッセージを送信し、データベースに記録します。他のすべてのアプリケーションからのログのほとんどは、操作ごとに数十ログに制限されています。最近、このロギングサービスを使用するために別のアプリケーションを移植しました。このアプリケーションは、ログサービスの他のどのクライアントよりもかなり積極的にログを記録します。コース中に100,000を超えるメッセージをログに記録できる操作があります(これは、CSVファイルを介して100,000レコードをインポートするためのものです)。
これをより効率的に実行する方法を見つけるために、アプリケーションがログサービスと直接通信するのではなく、MSMQを使用してログ要求をキューに入れ、サービスに転送することをお勧めします(要求はパフォーマンスのために別のスレッド)。このようにして、ログの書き込み中にアプリケーションがブロックされることはありません。このMSMQソリューションの概念実証をローカルマシンに実装しましたが、これまでMSMQを使用したことがなく、技術的にその場所が何であるかを学習しているだけなので、多くの質問といくつかの回答があります。 。私が書いたこの概念実証をより適切にデバッグできるように、誰かがMSMQの動作に関する簡潔な情報を教えてくれることを願っています。
MSMQを実装した後に表示される内容:
- ログをMSMQに送信する私のアプリケーションは、(ログがコミットされるのを待つのではなく)ほぼ即座に返されます。これは私が望んでいることです。
- 1000ログをMSMQアプリケーションに30秒未満で送信しましたが、1000ログすべてがデータベースに到達するまでに数分かかります。私のキューでは、ログリクエストを保留しているときに何らかのスロットリングが有効になっているように見えますが、それを確認する方法/場所がわかりません。
- MSMQサービスからログを受信するサーバーでnet.tcpを使用すると、大量のサービスタイムアウトエラーが発生し、ログの90%(またはそれ以上)だけがデータベースに到達しますが、basicHttpBindingを使用すると確実に機能します。
これが私のMSMQサービスのコードです:
これがMSMQサービスを作成する私のコードです
MSMQサービスを呼び出すために使用するアプリケーションのコードは次のとおりです。
私は誰かが提供できるどんな助けにも感謝します。MSMQを使用して利用できる機能のセットが正確にわからなくなっています。私はグーグルを介して6時間ほどの研究をしました。私が見つけたほとんどのドキュメントはかなり古く(2007年)、読むのが難しいです。おそらく彼らは、私がこの主題についてある程度の知識を持っていることを期待しています。
wcf - すべてのリクエストをキューに入れる WCF サービス
私は wcf サービスを持っており、多くのクライアント (サーバー ドキュメント生成) を処理しています。このサービスは大量のリクエストを受け取り、キューで処理する必要があります。コールバックもあります。(コールバックは正常に生成されたドキュメントを返します)。私はまだ PIA を使用しており、将来的に OpenXML を実装する予定です。
これを実装する方法はwcf msmqですか?
関連する可能性のあるサンプルはありますか?以前はローカル マシンで実行されていましたが、現在はいわゆる「サーバー生成」として変更したいと考えています。
.net - server.create()が機能するのにserver.connect()が機能しないのはなぜですか?
単純なstreaminsightアプリをセットアップする際に、server.create()が機能し、server.connect()が失敗するという問題が発生しています。何が原因かわかりません。
編集:ここのソースコード:http://pastebin.com/XigdxXLd
私のセットアップ:
- クライアントがデータを送信するプライベートmsmq
- サーバーは入力アダプターを使用してこのmsmqを読み取り、テキストファイルに出力を生成します
上記の設定で、streaminsightサーバーのメモリ内インスタンスを作成すると(を使用server.create("MyInstance")
して、msmq内のすべてのメッセージを消費し、正常に動作します(server.disposeに配置するのが好きなので、アプリが終了するまでに約1分かかります) ()しばらくお待ちください)。
次を使用してserver.connectに切り替えると、次のようになります。
msmqのメッセージを1つだけ消費し、アプリは完了しません。プロジェクトは1分後にタイムアウトしapplication.Delete()
ます(アプリケーションはMS.CEP.applicationです)。
誰かが私が間違っている可能性があることを手伝ってくれますか?
また、StreamInsightHost.exe.config
最近ファイルを開こうとしましたが、メモ帳もVisualStudioでもファイルを開くことができませんでした。これが何かに影響を与える可能性があるかどうかはわかりませんが、私はそれをそこに出すと思っていました。
wcf - 60 秒後に MsmqException (0xC00E0051)
トランザクション キューで netMsmqBinding を使用しています。WCF サービスは問題なく呼び出されますが、サービスはメッセージが処理されてからわずか 60 秒後に MsmqException をスローします。
これは例外です:
System.ServiceModel.MsmqException (0xC00E0051): キューからメッセージを受信中にエラーが発生しました: 認識できないエラー -1072824239 (0xc00e0051)。MSMQ がインストールされ、実行されていることを確認します。キューが受信できることを確認してください。System.ServiceModel.Channels.MsmqInputChannelBase.TryReceive (TimeSpan タイムアウト、Message& メッセージ) で System.ServiceModel.Dispatcher.InputChannelBinder.TryReceive (TimeSpan タイムアウト、RequestContext& requestContext) で System.ServiceModel.Dispatcher.ErrorHandlingReceiver.TryReceive (TimeSpan タイムアウト、RequestContext& requestContext) )
いくつかの調査、デバッグ、トレースを行ったところ、新しいメッセージを受信すると 2 つのトランザクションが開かれ、最初のトランザクションはサービスの実行直後にコミットされますが、2 つ目のトランザクションは決してコミットされないため、60 以降秒後に、DTC は MsmqException をスローして中止します。これは操作の定義です:
何が起こっているのか、どうすればこの問題を解決できますか?
アップデート:
構成:
サービスの実装:
サービス契約:
完全な動作:
- クライアントがメッセージを送信します
- サービスが有効化されました
- DTC は 2 つのトランザクションを開始します (DTC モニターと TransactionManager.DistributedTransactionStarted イベントで確認できます)。
- 操作が終了するとすぐに最初のトランザクションが終了します
- 2 番目のトランザクションは 60 秒後に中止されます (MsmqException がスローされます)。
- wcf ホスト (IIS) に障害が発生することがあります (自動的に回復するコードがいくつかあります。.net 4 でこの動作が変更されたようです)。
- ホストが壊れて自動的に回復した場合、次のメッセージですべてが再び発生します
- ホストが壊れていなければ、次回は 2 番目のトランザクションは開始されず、すべて問題なく動作します :)。
- AppPool をリサイクルすると、問題が再び発生します