Распределенные приложения на основе MS Message Queue Server


         

Определим переменную qinfos как коллекцию


Определим переменную qinfos как коллекцию MSMQQueueInfo:

Dim qinfos As MSMQQueueInfos

и выполним поиск по метке очереди:

Set qinfos = query.LookupQueue(Label:=strQueLbl)

Вернемся на начало коллекции:

qinfos.Reset

Получим первый из результатов:

Dim qinfo As MSMQQueueInfo
Set qinfo = qinfos.Next

Если по нашему запросу очередей не найдено, выдаем соответствующее предупреждение:

If qinfo Is Nothing Then
MsgBox “Очереди с лэйблом “ & strQueLbl & “ не найдено”

в противном случае возвращаем указатель на первую из подходящих очередей:

Else
Set FindQueOnLabel = qinfo
End If
End Function

Теперь мы можем очень просто решить задачу удаления очереди с известной меткой:

Sub DeleteMQPublQue(strQueLbl As String)
FindQueOnLabel(strQueLbl).Delete
End Sub

В рассматриваемом приложении каждая глобальная очередь обозначалась своей меткой, отличной от меток других глобальных очередей. Возникает вопрос: что делать, если несколько очередей имеют совпадающие метки (такое в принципе возможно). Ответ простой — надо проводить поиск по свойству (например, GUID) или комбинации свойств, уникально определяющих очередь. Набор параметров метода LookupQueue объекта MSMQQuery позволяет это сделать. Кстати, из текста примера с функцией FindQueOnLabel очевидно вытекает, как обработать не одну, а целую группу очередей, обладающих каким-то общим признаком. Для этого нужно слегка изменить вышеприведенный фрагмент кода, чтобы операции выполнялись не над первой очередью из результатов запроса, а над всей коллекцией. Предположим, по какой-то причине нам настолько неприятны очереди c Type ID= {BBD97DE0-CB4F-11CF-8E62-00AA006B4F2F}, что мы хотим их удалять всякий раз перед началом работы программы. Нет ничего проще — давайте вставим в обработку события Form_OnLoad (или UserDocument_Initialize и т.п.) следующий код:

Dim query As New MSMQQuery
Dim qinfos As MSMQQueueInfos
Set qinfos = query.LookupQueue(ServiceTypeGuid:=”{BBD97DE0-CB4F-11CF-8E62-0AA006B4F2F}”)
qinfos.Reset
Dim qinfo As MSMQQueueInfo

Содержание  Назад  Вперед





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий