リモート msmq キューからのメッセージ カウントのクエリで問題が発生しました。
これは私のコードです:
def get_message_count
mq_management = WIN32OLE.new('MSMQ.MSMQManagement')
mq_management.Init('xxx.yyy.zz.aa', nil,'direct=tcp:xxx.yyy.zz.aa\private$\inbox')
message_count = mq_management.MessageCount
end
xxx.yyy.zz.aa は、リモート コンピュータの IP アドレスです。
この方法は実際には魅力的ですが、次のようになります。
キューが空の場合、一定時間後にこのエラーが発生し続けます。
`method_missing': 初期化 (WIN32OLERuntimeError) OLE エラー コード: MSMQManagement の C00E0004 キューが開いていないか、存在しない可能性があります。HRESULT エラー コード: 0x80020009 例外が発生しました。
キューにまだアイテムがある場合、このメソッドは想定どおりに機能します。
この記事を見つけました: MSMQ 発信キューを作成するにはどうすればよいですか? それは言う:
MSMQ は、別のメッセージを送信しようとしている場合に備えて、数分間 (空であっても) キューを保持します。これにより、キュー マネージャーがネットワーク接続を再度確立する手間が省けます。このクリーンアップの遅延は、CleanupInterval レジストリ値 (クライアントの場合は 5 分、サーバーの場合は 2 分) によって制御されます。
現在、レジストリ設定を微調整することはできません。別のオプションは、おそらく WMI を介してメッセージ数を取得することですが、Ruby でこれを行う方法がわかりません (.NET 開発者)。
キューを「目覚めさせる」可能性はありますか?
助けていただければ幸いです!ありがとうございました