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


         

и посмотрим содержание очереди InteractionQueue


и пошлем в нее простенькое сообщение

SendMQMsg “InteractionQueue”, “Проба”, “Hello, World”

Зайдем в MSMQ Explorer и посмотрим содержание очереди InteractionQueue (если она еще не видна, нажмите кнопку Refresh). Мы увидим, что в нее пришло новое сообщение с меткой “Проба”. С помощью правой кнопки мыши вызовем меню “Properties” для этого сообщения и выберем, например, закладку “Body”. Как легко убедиться, тело сообщения содержит тот самый текст (Hello, World), который был нами отправлен (рис.4). Если у нас нет соответствующих прав по отношению к очереди или тому компьютеру, где она находится, ее содержание будет для нас недоступно и вместо списка пришедших сообщений мы получим строку “Cannot open queue…”


Рис. 4
Обратите внимание на то, что msg.Body имеет тип Variant. Это означает, что в качестве тела сообщения можно передавать не только текстовую строку, но и любой другой тип, который может быть упакован в простой Variant: число, валюта, дата, байтовый массив. В общем случае им является любой ActiveX-объект, характеризующийся перманентным состоянием, то есть поддерживающий интерфейсы IPersist* (IPersistStream или IPersistStorage), например документ MS Office. Если принимающее сообщение ничего заранее не знает о теле поступившего сообщения, оно может использовать функцию TypeName для проверки простых типов. В Visual Basic нет функции QueryInterface для проверки поддерживаемых объектом интерфейсов, поэтому рекомендуется использовать конструкцию if TypeOf … is … then. Рассмотрим в качестве примера передачу в сообщении результатов запроса к базе данных в виде Recordset. В нашем простеньком приложении “клиент-банк” состояние банка описывается базой данных Bank, по своей структуре очень похожей на ту, которая была нами построена в [1]. В частности, в нее входит таблица Oper, в которой ведется учет совершенных операций. Она имеет поля account_deb (счет по дебету), account_cre (счет по кредиту), сумма сделки, дата, номер операции и т.д. Тогда выписку по счету, скажем, 10001 легко получить запросом select * from Oper where account_deb=’10001’ or account_cre=’10001’.

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





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