У меня проблема с запросом количества сообщений из удаленной очереди 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 ': Init (WIN32OLERuntimeError) Код ошибки OLE: C00E0004 в MSMQManagement Очередь не открыта или может не существовать.Код ошибки HRESULT: 0x80020009 Произошло исключение.
, если в очереди все еще есть элементы, тогда этот метод работает, как и предполагалось.
Iнашел эту статью: Как создать исходящую очередь MSMQ? , в которой говорится:
MSMQ поддерживает очередь в рабочем состоянии (даже если она пуста) в течение нескольких минут на всякий случайВы собираетесь отправить другое сообщение.Это экономит администратору очередей усилия по повторному установлению сетевого подключения.Эта задержка очистки контролируется значением реестра CleanupInterval - 5 минут для клиентов и 2 минуты для серверов.
В настоящее время мы не можем настраивать параметры реестра.Другой вариант, вероятно, состоит в том, чтобы попытаться получить количество сообщений через WMI, но я не уверен, как вы делаете это в ruby (будучи разработчиком .NET)
Может быть, есть возможность «разбудить» очередь?
Буду признателен за любую помощь!Спасибо