問題タブ [message-queue]
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.
multithreading - スレッドのメッセージ キューのサイズを監視できますか?
私たちのアプリケーションは、DCOM ( 0x80010100
) から System Call Failed RPC エラーを受け取りました。ターゲット スレッドのメッセージ キューがいっぱいであると思われます (ただし、これが完全であるとは確信していません)。キューがメッセージに限定されて10,000
いることはわかっており、一般的なケースでこの数に近いかどうかを確認したいと考えています。スレッドのメッセージ キューのサイズを監視する方法はありますか?
私が見つけた最も有望なオプションはこれでしGetQueueStatus
たが、これにはキュー内のメッセージの数は含まれず、そのタイプのみが含まれます。
java - XmlBlasterの長所と短所
XmlBlasterを使用していますか?あなたはそれについてどう思いますか?その弱点と強みは何ですか?
logging - すべてのメッセージのJMSキューロギング/ブラウジング(キューの非表示コンシューマ)(OpenJMS)
JMSキューを参照/ログに記録するための優れた方法があるかどうか、考えがありますか?(私はOpenJMSを使用しています)
トピックについては、もう1つのコンシューマーを追加するだけで済みます。それだけですが、キューを使用しても、まだソリューションを完成させていません。特定のキューとトピックにあるすべてのメッセージを、キューから「ポップ」せずにログに記録したいと思います(これにより、ロガーはキューを「非表示」に参照できます)。
javax.jms.QueueBrowserを使用すると、キューのスナップショットを取得できますが、「リスナーソリューション」を提供していないようです。無限ループでキュー上のすべてのメッセージを何度も読み取り、両方のメッセージが書き込まれないことを期待しています。スナップショットの前に消費されました-それは良い解決策のようには思えませんでした。
もう1つのオプションは、「論理キュー」ごとに2つのキューを作成することです。1つはロガー用、もう1つは実際の使用用です。ロガーはメッセージを「実際のキュー」に転送します。これは機能する可能性がありますが、より良い解決策があるでしょうか。
したがって、誰かが「見えない」ロガーによってキュー内のすべてのメッセージを取得するソリューション、またはロギングのための他の優れたソリューションを持っている場合、それはクールです。
queue - テーブルを使用したキュー
テーブルを使用してキューを実装する必要があります。ビジネス要件は、次のジョブを取得するために 5 ~ 10 個のボックスがアクセスする単一のキューを持つことです。1 日あたり 5000 以上のジョブはありません。また、ジョブのバッチは一度に「デキュー」する必要があります。
以前に行ったことがないので、私が遭遇する可能性のある問題領域と問題は何なのかと思っています。誰かがこれに直面した/これを以前に行ったことがある場合は、設計/サンプルの実装、または対処する必要がある問題を教えてください。
ありがとう
message-queue - WebsphereMQメッセージ履歴
私のアプリケーションは、IBMWebsphereMQを介して別のシステムと通信します。時々メッセージが私のキューに入ってこないが、他のシステムは彼らがすでに私に送ったと言った。だから私は私のキューに到着するすべてのメッセージの履歴を保持する方法を知りたいです。
message-queue - Websphere MQスクリプトを生成する方法は?
スクリプトファイルからMQキューマネージャーを作成するために「mqsc」を使用することがよくありますが、スクリプトファイルを生成する方法がわかりません。
ありがとう
.net - ASP.NET - 新しいアプリケーションに最適なキュー システム
私の組織は、asp.net アプリケーションである新しいシステムを実装する準備をしています。アプリケーションには、Web サイトによって開始されるオフライン作業の大きなキューがあります。このキューは、理想的には XML メッセージで、さまざまな種類のアクティビティを保持します。メール通知、スケジュールされたタスクなどを考えてみてください。
以前は、組織は MSMQ を使用してこのタスクを実行していた可能性があります。ただし、彼らは MSMQ を古い学校と見なしているため (私も部分的に彼らに同意します)、「最適な」ソリューションを決定するためにアーキテクチャのレビューを行う予定です。
考えられる選択肢はいくつかあり
ます。 1. MSMQ の最新バージョンでの新しい実装に固執します。これは理想的ではありませんが、既知の製品です。
2. Windows Workflow Foundation を使用します。これは、この種の目的でこれを使用している他の数人の開発者から聞いたことがあります。
3. カスタム データベース ソリューションを開発します。
明らかな解決策がありませんか?これは理想的には Microsoft 製品ですが、実際には Microsoft 中心のショップで動作する必要があります。
私が懸念しているのは、次の点です
。 1. 実装と保守の容易さ
2. しばらくの間使用できるソリューション
3. 中サイズの XML データを含む大量の行を処理できること
4. 迅速な更新を備えた絶対的に信頼性の高いキュー システム (複数のユーティリティ プロセスがキューからレコードを取得して処理する可能性があります)。
winapi - Win32:IProgressDialogは、マウスを合わせるまで消えません。
Win32の進行状況ダイアログを使用しています。最もひどいことは、私が電話するときです:
消えません。ユーザーがマウスをその上に移動するまで画面に表示されたままになり、その後突然消えます。
の呼び出しStopProgressDialog
はすぐに戻ります(つまり、同期呼び出しではありません)。呼び出しが戻った後に何かをすることでこれを証明できます:
フォーム:
- 灰色で始まります
- 見つめていることを示すために赤に変わります
- 灰色に戻り、停止と呼んだことを示します
StopProgressDialog
したがって、進行状況ダイアログがまだそこにあり、私をあざけり、メッセージを表示していることを除いて、への呼び出しが戻ってきました。
進行状況ダイアログの停止
10秒間表示されない
さらに、進行状況ダイアログは、
10秒の睡眠が終わりました。
.NETWinFormsに限定されません
同じコードがDelphiでも失敗します。これは、Windowのウィンドウのオブジェクトラッパーでもあります。
PreserveSig
StopProgressDialog
失敗した場合は例外がスローされます。
IProgressDialogのほとんどのメソッドは、C#(またはDelphi)に変換されると、失敗したCOMHRESULTSを母国語の例外に変換するコンパイラの自動メカニズムを使用します。
つまり、COM呼び出しがエラーHRESULT(つまり、ゼロ未満の値)を返した場合、次の2つのシグニチャは例外をスローします。
以下では、HRESULTを確認し、自分で反応することができます。
HRESULTは32ビット値です。上位ビットが設定されている場合(または値が負の場合)、エラーになります。
私は前者の構文を使用しています。したがって、StopProgressDialog
がエラーを返す場合、それは自動的に言語例外に変換されます。
注:構文を使用したSaGの[PreserveSig]
場合、返されるHRESULTはゼロです。
MsgWait?
症状は、レイモンド・チェンがかつて説明したものと似ています。これは、PeekMessageとそれに続くMsgWaitForMultipleObjectsの誤った使用に関係しています。
「プログラムが動かなくなって、必要なレコードより1つ少ないレコードが報告されることがあります。更新する値を取得するには、マウスを動かす必要があります。しばらくすると、2つ遅れ、次に3つ遅れます...」
ただし、CLR .NET WinFormsとネイティブWin32コードで同じように失敗するため、失敗はIProgressDialogにあることを意味します。
sql - MSMQ v データベース テーブル
既存のプロセスは、ユーザー入力に応じて、テーブル内の予約レコードのステータス フィールドを変更します。
特定のステータスのレコードに対して非同期で実行する、別のプロセスを作成する必要があります。テーブル レコードを読み取り、いくつかの操作 (サード パーティの Web サービスへの呼び出しを含む) を実行し、レコードのステータス フィールドを更新して、処理が完了したことを示します (または、エラー カウントでエラーが発生したことを示します)。
この操作は、キューに非常に似ています。この状況で、SQL テーブルではなく MSMQ を使用する利点とトレードオフは何ですか? また、どちらか一方を選択する必要があるのはなぜですか?
テーブル内のレコードを追加および更新しているのは、当社のソフトウェアです。
これは、非同期処理を実行する新しい作業 (Windows サービス) です。これは「常に稼働」している必要があります。
java - 優先度のあるメッセージ処理
Java Webアプリケーションでは、タイプAのメッセージが繰り返し読み込まれます(たとえば、1時間ごとに20,000)。次に、2番目のタイプのメッセージ(タイプB)がありますが、これらは時々表示されますが、タイプA(たとえば、3,000)よりも優先度が高くなります。オープンソースソフトウェアを使用して、これらのメッセージを1台以上のマシンで処理できるようにしたいと考えています。
優先度に基づいてキューからメッセージを送信するJMSサーバーがあれば、JMSでそれを行うことができるように思えます(たとえば、タイプAのすべてのメッセージがメッセージキューの一番上にあります)。
それを実行できるJMSサーバーを知っていますか?またはこれを実装する別の方法を知っていますか?