問題タブ [msmq-wcf]
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.
wcf - Windows サービスを使用して WCF 経由で MSMQ メッセージを処理する
Windows サービスを使用してメッセージを選択するソリューションがあります。
Windows サービスは 2 分ごとに起動し、MSMQ メッセージを取得して Web サービスに渡します。
- MSMQ キューからメッセージを自動的に取得する WCF サービスを作成できますか?
- 自動呼び出しをサポートしている場合、WCF サービスを使用して Windows サービスを回避できますか?
wcf - IISサービスとのWCFMSMQバインディング-サービスをインスタンス化する方法は?
netMsmqBindingを使用したWCFサービスがあります。クライアントはキューにメッセージを送信でき、サービスの実行中は期待どおりにキューからメッセージを取得します。サービスが実行されていない場合、受信したメッセージはサービスが開始されるまでキューに入れられます。
私の問題は、メッセージがキューにヒットしたときにサービスが開始されないことです。このサービスはIISでホストされているため、IISが要求を受信するまでインスタンス化されません。サービスを参照すると、キュー内のメッセージが処理されますが、明らかにこれはキューを処理するための私の望ましい方法ではありません。
サービスの実装を変更するか、IISのセットアップを変更する必要があると思いますが、どこで何を変更すればよいかわかりません。
アップデート
誰かが実際にWCF上でMSMQを使用していますか?私はこれを短時間機能させました-奇妙なことに、同じサーバー上の別のWebサイトでバインディングを有効にしました-しかし、今ではどういうわけか再び機能しなくなりました。
私が抱えている唯一の問題は、キューにメッセージがある場合のサービスのアクティブ化にあります。現在、キューはサービスがインスタンス化されたとき、たとえば.svcファイルを参照したときにのみ処理されます。アプリケーションでnet.msmqプロトコルを有効にし、サイトでnet.msmqバインディングを有効にしました...他に何かする必要がありますか?
wcf - MSMQ3.0 用の WCF 配信不能サービスを作成する方法
トランザクション システムのデッド レター キューからデッド レターを読み取るサービスを作成しようとしています。
サービス構成は次のようになります。
私のサービスインターフェース:
私のサービスの実装では:
そして、次のようにホストを起動します。
これまでのところ、すべてが多くの本やチュートリアルで説明されているように見えますが、トランザクションのデッドレター キュー内でデッドレターを生成すると、サービスが呼び出されません。サービスの何が問題になっていますか?
助けてくれてありがとう
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 オブジェクトを使用するようにします。
active-directory - MSMQ には AD 証明書が必要ですが、サービス アカウントを使用しています
問題: MSMQ が AD アカウントに必要とする AD 証明書を作成するには、最初のログイン時に AD のコンピューターごとに自動作成されます。
バックグラウンド:
プロジェクトに WCF + MSMQ を使用しています。"MSMQ クライアント" は、実際には対話のない Windows サービスであり、データを処理してキューに送信します。私たちの実稼働 (およびテスト/etc) 環境では、この Windows サービスはサービス アカウントとして実行されます。
- このサービス アカウントは AD にあります
- このサービス アカウントには、対話的にログインする権限がなく、その権限が付与されることはありません
- これは安全な環境であるため、wcf msmq サービスのアクティブ化が失敗するため、セキュリティを「オフ」に設定することはできません。
msmq - MSMQ - 2 つのアプリケーション間で通信する方法
私はごく最近 MSMQ を調べ始めたので、基本的な疑問があります。2 つのアプリケーションが通信する必要がある場合、たとえばサーバーとクライアントは両方とも同じ MQ アドレスを共有すると思います。クライアントが更新されると、サーバーはメッセージをリッスンしてそれを使用する MSMQ ウォッチャーを持ちます。したがって、私によると、必要な3つのコンポーネントがあります
クライアント - キューの場所を知っている
キューウォッチャー - キューを監視します
service -- キュー ウォッチャーがメッセージを送信する先
wcf - 負荷分散された環境でのWCFサービス間のMSMQ
たくさんのWCFサービスに基づいた製品にキュー機能を追加することを考えています。MSMQについていくつか読んだことがあります。最初はそれが必要だと思いましたが、よくわかりません。キューをデータベーステーブルに配置することを検討しています。ここの誰かがどちらに行くべきかについていくつかのフィードバックを得たのだろうか。
基本的に、http経由でファサードWCFサービスを呼び出すことを計画しています。ファサードサービスは、呼び出し側システムに高速応答を提供するために、すべての着信メッセージのみをキューに書き込む必要があります。次に、キュー内のメッセージは、キューの選択に応じて、WCFサービスまたはWindowsサービスのいずれかの別のコンポーネントによって処理される必要があります。
この製品は、2〜n台のWebサーバーを備えた負荷分散環境で実行されています。
私が検討しているオプションと私が得た質問は次のとおりです。
- ファサードWCFにMSMQへの書き込みを許可してから、別のWCFサービスにこのキューからの読み取りを行わせてメッセージの処理を実行します。私が読んだことから、この代替案について自信がないのは、これが負荷分散された環境でどのように機能するかということです。
1A。MSMQはどこに配置する必要がありますか?各Webサーバーに1つ?別のサーバーに1つ?別のサーバーに複数ありますか?(冗長性の必要性を考慮しておらず、まれにデータが失われて再送信される可能性があります)
1B。システムを冗長にしたい場合、設計はどのように影響しますか?キュー内のデータを失うことなく、MSMQを保持しているサーバー(再びオンラインになることはありません)を失う可能性があります。私がMSMQについて読んだことから、MSMQをWindowsクラスターに配置する唯一のオプションがあります。あれは正しいですか?(これにWindowsクラスターを使用することは避けたいです)。
- 2番目の設計上の代替案は、ファサードWCFサービスにキューをデータベースに書き込ませることです。次に、キューの処理を実行する2つ以上のWindowsサービスを用意します。この代替案について質問はありません。なぜ私がこれを選ばないのか疑問に思うなら、それは私がソリューションにWindowsサービスを導入せずにこれを構築したいので、MSMQが私が望まない機能を持っていると信じているからです自分でコーディングしてください。MSMQを使用したことがないので、MSMQの使用にも興味があります。
よろしくホーカン
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年)、読むのが難しいです。おそらく彼らは、私がこの主題についてある程度の知識を持っていることを期待しています。
msmq - LAB EntLib、MSMQ、およびWCFについて
私は今までいつも自分のロガーを書いていたので、このテーマにはあまり満足していません。
WCFRESTWebサービスがあります。このサービスは、エラーから誰がいつ使用するかについての情報をログに記録する必要があります。
そのために、Enterprise Library(5.0)のLoggingApplicationBlockが選択されています。良好なパフォーマンスを維持するために、MSMQを使用することにしました。目的は、ある時点でログをファイルに保存するまで、ログをそこに保存することです。
いくつかのWebサイトで、WCFを使用してメッセージをMSMQに送信してから、別のエンティティを使用してキューを操作したり、MSMQをトランスポートプロトコルとして使用してWCFと通信したりできることを確認しました。今は、LABのLoggerクラスを使用して、ログをキューに挿入しています。
MSMQを使用して、ログ機能からWebサービスの同期を解除するだけです。
だからここに私の質問があります:MSMQがWCFで役立つ場合は何ですか?私が説明する場合、ファイルにいくつかのものを記録するためだけに別のWCFアプリケーションを使用するのはやり過ぎではありませんか?