問題タブ [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.
wcf - TransactionScope内でnetMsmqBindingを使用してWCFを呼び出してトランザクションを停止する
MSMQ で動作する WCF ログ サービスがあります。アイテムは Sql Server 2005 データベースに記録されます。TransactionScope の外部で使用すると、すべてが正しく機能します。TransactionScope インスタンス内で使用すると、呼び出しによって常にトランザクションが中止されます。Message = "トランザクションは中止されました".
この呼び出しをトランザクション内で機能させるにはどうすればよいですか? それは可能ですか?クライアント トランザクションがサービスの境界を越えて流れるには、バインディングがトランザクション フローをサポートする必要があることを読みました。これにより、バインディングがただちに NetNamedPipeBinding、NetTcpBinding、WSHttpBinding、WSDualHttpBinding、および WSFederationHttpBinding のみに制限されます。
.net - 最もパフォーマンスの高い WCF バインディングはどれですか?
WCF サービスで最大のスループット パフォーマンスを得る必要があります。私のテストの 1 つで、以下のサービスは、NetTcpBinding を使用して 1 分間に 50k のデータ項目しか取得できませんでした。NetMsmqBinding のような切断されたバインディングは、このパフォーマンスを改善しますか?
サービスとクライアントは WCF を使用し、同じマシンで実行されます。
上記のコードは、実際のコードを簡略化したものです。
serialization - netmsmqバインディングを介して送信されるmsmqからのメッセージの逆シリアル化
wcfサービスがあり、エラーが発生した場合は、System.MessagingのSend Method()ではなく、netmsmqバインディングを使用してメッセージを「poison」キューに送信します。
そのポイズンキューからそれらのメッセージをフェッチしようとしましたが、逆シリアル化すると、16進値のジャンクデータが大量に取得されました...
c# - MSMQは、エラーが発生する前に3回だけメッセージの受信を試みます
キューにいくつかのメッセージがあります。ここで、3回試行した後、サービスホストに障害が発生していることに気付きました。これは正常な動作ですか?3回はどこから来るのですか?私はそれがreceiveRetryCountから来たと思いました。しかし、私はそれを1に設定しました。
キューに20個のメッセージが処理されるのを待っています。メッセージの処理を担当するWCF操作はトランザクションをサポートしているため、メッセージを処理できない場合は、メッセージがキューにとどまるようにスローされます。
何度か再試行した後、ServiceHostに障害が発生するとは思いませんでしたが、この部分はどこかに文書化されていますか?
私は自分のwinxpマシンでMSMQサービスを実行しています。
何度か再試行するとサービスホストに障害が発生することを示すドキュメントにもっと興味があります。この部分は本当ですか?
windows-7 - MSMQプライベートキューのサイズ制限
ローカルコンピューターで定義されたプライベートキューにメッセージを入れようとしていますが、キューのサイズが8MBを超えることはできません。そのサイズに達するたびに例外が発生します。特定のキューのサイズは10GBに設定されています。私はWindows7Professionalを実行しています。そのために制限はありますか?
wcf - WCFでMSMQを使用する方法は?
を除いて、多くのWCFバインディングを操作できますnetMsmqBinding
。私が得るのは:
CommunicationObjectFaultedException: "通信オブジェクトSystem.ServiceModel.ServiceHostは、Faulted状態であるため、通信に使用できません。"
System.ServiceModel.Channels.CommunicationObject.Close(TimeSpanタイムアウト)で
次の機能がインストールされたWindowsServer2008R2で試してみました
- メッセージキュー
- メッセージキューサービス
- メッセージキューサーバー
- メッセージキューのトリガー
- HTTPサポート
- マルチキャストサポート
- メッセージキューDCOMプロキシ
サーバーマネージャーにプライベートメッセージキューを手動で追加しようとしましたが、機能しませんでした。
Windowsサービスを使用してMSMQをホストしています。私のサービス契約は
そして私のapp.configには
と
.net - .net 4.0 およびサーバー 2008 での MSMQ wcf アクティベーションの問題
サーバー2008 x64で実行されているnet.msmqを使用するnet 3.5から移植された.net 4.0アプリケーションがあります
設定
- アドレスが「net.msmq://localhost/private/msmqdataservice.svc」の net.msmq サービス
- アドレス "net.msmq://localhost/private/msmqdataservice.svc" の net.msmq endpoing
- MSMQ のキュー -> name = "$private\msmqdataservice.svc"
現在、.net 3.5 を使用して、すべてが本番環境で動作しています。
サーバーに.net 4.0をインストールし、同じボックスにステージングするための新しいサイトを作成しました。
新しいステージング msmq セットアップは
- アドレスが "net.msmq://localhost/private/staging/msmqdataservice.svc" の net.msmq サービス
- アドレス "net.msmq://localhost/private/staging/msmqdataservice.svc" の net.msmq endpoing
- MSMQ のキュー -> name = "$private\staging/msmqdataservice.svc"
別のサイト用に別のキューを作成しました。
私が新しいサイトで行ったもう1つの変更は、これがiisの別のサイトであり、別のIPアドレスでリッスンしていることです。net.msmq を「localhost」にバインドしたままにしました。メイン サイトにも、net.msmq -> 'localhost' に対する同じバインディングがあります。そうあるべきだと思います。異なる構成が必要な場合は指摘してください。
問題は、リクエストがキューに入れられているが、アプリケーションによって取得されず、そこにとどまっていることです
ログに問題の兆候はありません。これに関連してログに表示されているのは、「msmqactivation がキューを検出できません」という警告だけです。この警告は正しく理解できませんでしたが、3.5 の msmq では常に問題なく表示されていたためです。
私が考えることができるものはすべて検証されており、正しいです。
- アプリケーションのアプリ プールはネットワーク サービスとして実行されており、キューに完全にアクセスできます。
- net.msmq アクティベーション サービスは、ネットワーク サービスで実行されています
- 同じ結果でサービスURLの異なる命名規則を試しました
概要
net.msmq を使用した複数のサイトのセットアップに関する洞察を提供してください。両方のサイトで値 = 'localhost' の net.msmq バインディングを使用しています。マシン名のアイデンティティだと思います。
この問題を診断する方法はありますか?
他に考えられることは何でも役立つかもしれません。
100 マンアワーを費やした後、問題が何であるかを理解できないため、昨日のリリースを延期する必要がありました。また、私の開発マシンでそれを壊すことはできません。
編集
問題は、新しいサイトの命名規則を作成した後に機能しないことでした
アドレス "net.msmq://localhost/private/staging/msmqdataservice.svc" を持つ net.msmq サービス net.msmq は、MSMQ のアドレス "net.msmq://localhost/private/staging/msmqdataservice.svc" キューでエンドポイン - > name = "$private\staging/msmqdataservice.svc"
サービス名 net.msmq://localhost/private/msmqdataservice.svc で動作しました
しかし、今ではまったく同じエンドポイントを使用する 2 つのサイトを持つことはできません。
同じマシンで異なるURLと異なるキューを持つ2つの異なるサイトで同じエンドポイントを持つ方法はありますか?
wcf - net.msmqを介したprotobuf-netでこの問題を見た人は誰でも
protobuf-netを使用してwcfnet.msmqを介して大きなメッセージを送信し、次のエラーが発生するという問題が発生しています。
フォーマッタは、メッセージの逆シリアル化を試みているときに例外をスローしました:操作'DeliverData'の要求メッセージの本文の逆シリアル化中にエラーが発生しました。終了要素'proto'from namespace'http ://mynamespace 'が必要です
メッセージサイズが16k未満の場合、機能します
protobuf-netを削除すると、機能します
basichttpに切り替えると、機能します
しかし、protobuf-netを使用してnet.msmqを介してメッセージサイズが16kを超えると、エラーが発生します。maxBufferPoolSizeとmaxReceivedMessageSizeを十分に大きく設定しましたが、役に立ちません。
他の誰かがこれを見たことがありますか?他の誰かが大きなメッセージにprotobuf-net+net.msmqを使用して、それを機能させましたか?
c# - パブリック MSMQ が空かどうかを確認する方法
パブリック MSMQ が空かどうかを確認する方法はありますか? プライベート MSMQ の場合は簡単です。
パブリック MSMQ に対して同じチェックを行うにはどうすればよいですか? 上記のコードでパブリック MSMQ をチェックしようとすると、Peak でエラーが発生します。
System.ArgumentOutOfRangeException: 長さを 0 未満にすることはできません。
wcf - WCF を介した MSMQ は、不適切な形式のメッセージを飲み込んでいますが、エラーも警告もありません
WCF を使用して、MSMQ のメッセージに応答するサービスがあります。メッセージが適切にフォーマットされていれば、正常に機能し、満足しています。メッセージが別のサービスを対象としていて、アクションが異なる場合、メッセージはキューに残り、ログ エントリを取得して修正し、満足しています。
しかし、メッセージに適切なアクションが含まれていても、サーバーによって逆シリアル化できない XML 要素が含まれている場合、メッセージはキューから消え、ログ エントリが取得されず、何が起こったのかほとんどわかりません。私たちは幸せではありません。
IErrorHandler を追加してみました。Faulted イベント ハンドラーを追加しようとしました。私にできることは、WCF に組み込まれている診断ログを使用することだけです。独自のロガーまたはエラー ハンドラーを使用して、コードでこのようなエラーに応答する方法はありますか?
私のキューはたまたまトランザクションですが、この問題に違いはないようです。これは、Windows Server 2003 上の MSMQ バージョン 3.0 で発生します。
このソース コードは問題を示しています。