問題タブ [msmq]
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 - WCF MSMQ コールバック関数
MSMQ を使用して WCF 経由で別のサービスにオブジェクトを送信するシステムがあります。サービスはメッセージを適切に取得し、必要な処理を行います。しかし、私が今抱えている問題は、呼び出し元のシステムに応答を送信する必要があることです。
例:
- 顧客オブジェクトを作成する
- 情報を入力する
- MSMQ 経由で WCF を使用してサービスにメッセージを送信する
- Windows サービスを使用してキューからメッセージを取得する
- Windows サービスで Customer.Insert() メソッドを呼び出す
- ここで、新しい顧客 ID を呼び出し元のアプリケーションに送り返す必要があります。
何か案は?
wcf - MSMQを消費するトランザクション型のマルチスレッドWCFサービスを作成する方法
プライベートな非トランザクションMSMQキューにメッセージを投稿するWCFサービスがあります。MSMQメッセージを処理してデータベースに挿入する別のWCFサービス(マルチスレッド)があります。
私の問題はシーケンスに関するものです。メッセージを特定の順序にしたい。たとえば、MSG-Bを挿入する前に、MSG-Aはデータベースにアクセスする必要があります。したがって、そのための私の現在のソリューションは、データベースの観点からは非常に粗雑で高価です。
メッセージを読んでいます。MSG-BでデータベースにMSG-Aがない場合は、メッセージキューに戻し、MSG-Aがデータベースに挿入されるまでそれを続けます。ただし、これにはテーブルスキャン(SELECT stmt)が含まれるため、非常にコストのかかる操作です。
メッセージは常に順番にキューに投稿されます。
WCFキュー処理サービスをシングルスレッドにする(サービス動作属性InstanceContextModeをシングルに設定する)以外に、誰かがより良い解決策を提案できますか?
ありがとう
ダン
.net - Windowsmobile デバイスから MSMQ 経由でメッセージを送信する際の問題
MSMQ を使用して、モバイル デバイスからサーバー上のリモート プライベート キューにメッセージを送信しようとしています。
何が起こっていますか?モバイル コードがメッセージを送信するときにエラーは発生しません。モバイル デバイスの msmq フォルダーを見ると、実際に、送信先のリモート用に .oq (送信キュー) ファイルが作成されています。
キューの formatname に IP アドレスを指定して Direct=TCP を使用しています。デスクトップから同じコードが問題なく実行されることを確認しました。メッセージは正しく配信されます。
コードが問題だとは思いません。メッセージがキューから出てサーバーに配信されるようにするために、モバイル環境で行う必要がある何かが欠けている可能性があります。
トラブルシューティングのために確認または実行したこと:
- 私は、verify を使用して、visadm から報告されたすべてが受け入れられることを確認しました。
- MSMQ に対してバイナリが有効になっています。
- ログは、MSMQ がエラーなしで開始したことを報告します。
- すべての SDK 証明書がデバイスにインストールされます。
- 送信メッセージが送信されると、.oq ファイルが作成されます。
- メッセージでジャーナルとデッドレターが有効になっています。(サーバーから配信不能として報告されるものはありません-接続しているとは思いません)
- ネットワークはアクティブで有効です (サーバーでホストされている Web ページにブラウザー経由でアクセスできます)
- サーバーの MSMQ は有効です (デスクトップから同じコードを使用してメッセージを配信できます)
- Visadm を介して、MSMQ のモバイル デバイスでステータスが正しくレポートされます。
Windows Mobile の MSMQ に精通している人がいて、私がチェックまたは有効化していないものについてアドバイスをくれることを願っています。
デバイスで .Net CF 3.5 を使用し、C# でコーディングしていますが、前述のとおり、コードは問題ではないようです。
助けてくれてありがとう
c# - System.Messaging.MessageQueueが文字列をXMLでラップしないようにするにはどうすればよいですか?
Windowsメッセージキューを介してC#アプリからレガシーアプリケーションと通信する必要があります。
レガシーアプリケーションは特定のプライベートキューにプレーンな文字列メッセージを期待していますが、System.Messaging.MessageQueueがメッセージをXMLでラップするのを止められないようです。
私がテストしているコードは非常に単純です。
問題は、メッセージがXMLシリアル化されており、キューに次のように表示されることです。
レガシーアプリケーションの動作を変更できないため、System.Messaging.MessageQueueがメッセージをXMLとしてフォーマットしないようにする必要があります。
誰か助けてもらえますか?
c# - 同じ MSMQ メッセージを 2 回受信していますか?
相互に通信する 3 つの層を持つ MSMQ ベースのシステムがあります。簡単にするために、レイヤー 1、2、3 と呼びます。これらは次のように配置されます。
したがって、レイヤー 1 はレイヤー 2 とのみ通信し、レイヤー 3 はレイヤー 2 のみと通信し、レイヤー 2 は他の両方と通信します。これには4つのキューがあり、
そして、レイヤーはこのインフラストラクチャを介して通信します。
(これが必要以上に網羅的である場合は申し訳ありません)
とにかく、メッセージはレイヤー 1 からレイヤー 2 に渡され、何らかの処理が行われ、別の (関連する) メッセージがレイヤー 3 に送信され、その逆も同様です。私が抱えている問題は、レイヤー 1 からレイヤー 2 に 2 つのメッセージが送信されることがありますが、両方のメッセージを順番に受信するのではなく、最初のメッセージを 2 回受信することです。メッセージを非同期に受信するためBeginReceiveに onを使用しています。Layer1_outそれが完了すると、受信したメッセージを処理し、BeginReceive再度呼び出して次のメッセージを取得します。
これを追跡するために、送信側にメッセージ カウンターを実装し、それをテキスト ファイルに書き込みました。プロパティを使用して、Extensionこのメッセージ番号の文字列表現を格納し、処理側でメッセージ番号を取得できるようにしています。メッセージを受信すると、この番号を取得して別のファイルに書き込みます。これは、同じ内容の 2 つのファイルを生成する必要がありますが、代わりに次のようなものが表示されます。
受信ログでは、メッセージ 215 が 2 回処理され、216 が届かなかったことを示しています。私の目的では、同じメッセージを 2 回処理しても何の影響もありません (そのため、これがしばらくの間見過ごされてきたのはなぜですか) が、メッセージをまったく見逃すことは大きな問題です。
何かご意見は?
wcf - 不明なメッセージ本文タイプを使用したMsmqIntegrationBindingシリアル化
MsmqIntegrationBindingを使用して、メッセージ本文としてシリアル化されたオブジェクトを持つレガシーキューと統合することを検討しています。メッセージ本文の「メタデータ」を取得し、サービス内で使用するサービス側クラスを作成する方法を思いついた人はいますか?
たとえば、システムAからシリアル化されたProductオブジェクトを入力し、サービスがそれを使用する必要がある場合、Productクラスがない場合、MsmqMessageにタイプを提供するにはどうすればよいですか?別のプログラムでメッセージを読み取り、逆シリアル化してから、コードdomを介して送信することを考えていました。アイデア?
dns - 2 つの DNS 名で MSMQ に送信できない
サーバー上の 2 番目の DNS 名に MSMQ メッセージを送信する際に問題が発生しています。その同じサーバーの IP を送信する場合は問題ありませんが、アーキテクチャ的にはそうではありません。MSMQ が受け取る名前を気にする理由について何か考えはありますか?
サーバー情報:
物理サーバーload-int-01には、2 番目の IP と DNS 名が関連付けられています。
- 最初の IP/DNS:
load-int-01、IP 付き10.0.10.10 - 2 番目の IP/DNS:
load-intv、IP 付き10.0.10.20
使用されるキュー パスの形式:
FormatName:DIRECT=OS:load-int-01\private$\MyQueue→正常に動作しますFormatName:DIRECT=OS:load-intv\private$\MyQueue→エラーを返す…キューが存在しないか、この操作を実行するための十分な権限がありません
また、代わりに IP アドレスを使用してみましたが、どちらの IP セットも正常に機能します。
FormatName:DIRECT=TCP:10.0.10.10\private$\MyQueue→正常に動作しますFormatName:DIRECT=TCP:10.0.10.20\private$\MyQueue→正常に動作します
msmq - メッセージング プラットフォーム
銀行環境で 2 つのコア システムを統合するメッセージング プラットフォームを検討しています。私たちはオープンソースのオプションを検討しています。どの製品を使用したことがあり、経験を共有できますか?
.net - MSMQ: リモート キューへの配信時に受信確認が返されない
MSMQ 確認応答をテストするための次のコードの断片があります。
queuePath と ackQueuePath の両方がローカル (つまり、".\private$\queuename" 形式) の場合、期待どおり、メイン キューに "test" メッセージが表示され、管理キューに到達キュー確認が表示されます。ただし、queuePath がリモート キューを指している場合、つまり「FormatName:DIRECT=OS:MACHINENAME\private$\queuename」形式の場合、そのリモート キューに「テスト」メッセージが表示されますが、ローカル管理キューに到達キュー確認応答がありません。 .
確認応答がリモート キューから返されないことを示すものは何も見ていないので、コードまたは環境に問題があると推測します。何か案は?
(どちらのマシンも Windows 2003 です。)