рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Настройка MSMQ

Настройка MSMQ - Лабораторная Работа, раздел Образование, По специальному курсу Распределенные системы и алгоритмы Перед Началом Разработки Приложения, Использующего Msmq Необходимо Убедиться,...

Перед началом разработки приложения, использующего MSMQ необходимо убедиться, что данная служба установлена на компьютере, так как MSMQ не устанавливается по умолчанию. Проверить доступность компонента можно одним из двух способов:

1. Щелкнуть правой кнопкой по ярлыку «Мой компьютер» и в контекстном меню выбрать пункт «Управление». В результате выполненного действия будет запущена консоль «Управление компьютером». В дереве консоли в разделе «Службы и приложения» вы должны увидеть раздел «Очередь сообщений». Если соответствующее поддерево открывается без сообщений об ошибке, значит, компонент установлен в системе и нормально функционирует.

2. В окно «Server Explorer» Visual Studio .NET необходимо открыть узел Servers. В списке доступных сервисов должен присутствовать раздел «Messages Queues», в котором должны присутствовать разделы Public Queues, PrivateQueues и Journal Queues.

Если данные процессы завершаются сообщениями об ошибке, необходимо установить MSMQ. Для этого нужно открыть «Панель управления», выбрать пункт «Программы и компоненты», затем перейдите по ссылке «Включение или отключение компонентов Windows». В списке компонентов выберите «Message Queues», нажмите «OK» и служба будет установлена.

После инсталляции MSMQ убедитесь в работоспособности компонента приведенными выше способами.

 

Приложение может вести поиск нужной ему очереди по ряду критериев. Это возможно при использовании механизма общих очередей в Microsoft Message Queuing, что требует развертывания Microsoft Active Directory.

 

Название Тип Описание
Public Queue Очереди пользователя Очереди, которые копируются по всей сети и доступны для других машин
Private Queue Очереди, доступные только на локальной машине
Administration Queue Содержит подтверждения посылки сообщений по сети
Response Queue Содержит сообщения ответа, возвращаемые посылающим приложением, когда сообщение получено приложением назначения
Journal Queue Системные очереди Хранит копии посланных сообщений, а также копирует сообщения, удаляемые из очереди
Dead-Letter Queue Хранит копии сообщений, которые не удается доставить или срок хранения которых в очереди истек
Report Queue Содержит маршруты, которым следовали сообщения
Private System Queue Содержит административные и уведомляющие сообщения, которые должна обработать система

После создания (или программно, или с помощью Computer Management) очередь существует до тех пор, пока не будет удалена или явно через Computer Management, или вызовом метода Delete для ее объекта. Фактически, очередь можно создать, чтобы она существовала вечно, служа удобным хранилищем для сообщений. После того, как сообщения пересланы очереди, они живут там до тех пор, пока не будут прочитаны или удалены. Прочитанное сообщение автоматически удаляется из очереди. Еcли чтение сообщения является частью транзакции, которая завершается неудачей, сообщение возвращается в очередь. Если нужно узнать, какие сообщения имеются в очереди, в нее можно подсмотреть, не читая их (а, значит, оставляя их в очереди). При работе с приватными очередями, создавая объект, следует указывать имя очереди. При попытке доступа к очередям по сети можно воспользоваться методами перечисления, возвращающими доступные очереди, и, основываясь на полученных свойствах, обратиться к определенной очереди.

 

Для программного доступа очередям сообщений необходимо указать ссылку на сборку System.Messaging в пункте меню «Project|Add Reference…».

Создание очередей

За создание новой очереди отвечает статический метод Create класса MessageQueue. В большинстве случаев очереди создаются системным администратором через консоль управления компьютером, однако иногда приложению требуется создать новые очереди на ходу. Метод Create является перегруженным, его параметр строкового типа указывает путь очереди, а параметр логического типа указывает, что очередь должна быть транзакционной. Для создания новой очереди используется фрагмент кода:

MessageQueue.Create(".Private$TestQ");

Символ "." используется как ссылки на локальную машину, если требуется, его можно заменить именем другого компьютера. Ключевое слово «Private$» означает, что создаваемая очередь является локальной, то есть другие машины сети не имеют доступа к ней. Для создания общедоступной очереди метод Create необходимо указать путь в формате «MachineNameQueueNaitie».

Для создания общедоступных очередей компьютер должен быть доменным сервером. Поэтому в данной лабораторной работе следует применять только локальные очереди.

Чтобы проверить, что очередь была создана корректно, на вкладке «Server Explorer» найдите очередь TestQ.

Доступ к очередям

После создания очереди необходим способ обращения к ней из исходного кода. Для этого предназначены несколько методов перечисления доступных очередей. Соответствующие статические методы класса MessageQueue приведены в таблице ниже.

Метод Описание
GetPrivateQueuesByMachine Возвращает локальные очереди на компьютере
GetPublicQueues Возвращает общедоступные очереди в сети
GetPublicQueuesByCategory Возвращает общедоступные очереди в сети, принадлежащие заданной категории
GetPublicQueuesByLabel Возвращает общедоступные очереди в сети, совпадающие с заданной меткой
GetPublicQueuesByMachine Возвращает общедоступные очереди для заданного компьютера

Представленный ниже программный код демонстрирует перечисление доступных локальных очередей.

// Получаем список локальных очередей данного компьютера

MessageQueue[] QueueList =

MessageQueue.GetPrivateQueuesByMachine(".");

 

// В диалоговом окне выводим пути доступных очередей

foreach (MessageQueue queueItem in QueueList)

{

MessageBox.Show(queueItem.Path);

}

Удаление очередей

Для удаления очередей используется статический метод Delete. Параметром метода является полное имя общедоступной или локальной очереди. В следующем примере удаляются локальная очередь с именем TestQ.

MessageQueue.Delete(".Private$TestQ");

Посылка сообщения

Для посылки сообщения очереди применяется метод Send, который является перегруженным и включает параметры Body, Label и Transaction. Ниже приведен пример кода, где выполняются отправка сообщения.

MessageQueue q = new MessageQueue(".Private$TestQ");

if (MessageQueue.Exists(q.Path))

{

q.Send("Test message","msg1");

q.Close();

}

Для проверки того, что очередь существует, применяется метод Exists. Желательно всегда производить подобную проверку, чтобы при выполнении программы не генерировалось прерывание, вызванное тем, что очередь не создана или находится в другом месте.

Если просмотреть очереди в консоли управления компьютером, в очереди TestQ можно найти сообщение сметкой msg1. При двойном щелчке на сообщении или выборе команды «Свойства» в контекстном меню по правой кнопке мыши можно просмотреть свойства и текст сообщения.

Чтение сообщений очереди

Для чтения сообщения из очереди используется метод Peek или Receive. Метод Peek читает первое сообщение в очереди. Он используется для проверки наличия сообщений в очереди и проверки ее свойств. При этом сообщение не удаляется. Если вызвать метод несколько раз, он будет возвращать одно и то же сообщение, пока в очереди не появится сообщение более высокого приоритета. Метод Receive читает сообщение и удаляет его из очереди.

Применение метода Peek демонстрируется в следующем фрагменте кода.

// Подключение к очереди

MessageQueue q = new MessageQueue(".Private$TestQ");

 

// Установка форматера тела сообщения.

q.Formatter = new XmlMessageFormatter(new Type[]

{typeof(System.String)});

 

try

{

// Просмотр и форматирование сообщения.

System.Messaging.Message myMessage = q.Peek();

String str = (String)myMessage.Body;

 

// Вывод тела сообщения на экран.

MessageBox.Show(str);

}

catch (MessageQueueException)

{

// Обработка исключений, связанных с очередями.

}

// Обработка исключений, связанных с сериализацией.

catch (InvalidOperationException ex)

{

Console.WriteLine(ex.Message);

}

Применение метода Receive демонстрируется в следующем фрагменте кода.

MessageQueue q = new MessageQueue(".Private$TestQ");

q.Formatter = new XmlMessageFormatter(new Type[] { typeof(System.String) });

try

{

System.Messaging.Message myMessage = q.Receive();

String str = (String)myMessage.Body;

MessageBox.Show(str);

}

catch (MessageQueueException)

{

}

catch (InvalidOperationException ex)

{

Console.WriteLine(ex.Message);

}

Удаление сообщений из очереди

Для удаления сообщений используется метод Purge объекта MessageQueue. Следующий фрагмент кода удаляет все сообщения из очереди TestQ.

MessageQueue q = new MessageQueue(".Private$TestQ");

q.Purge();

В реальной очереди вам, скорее всего, не придется удалять сообщения. Метод Purge применяется, в основном, для журнальных очередей. Если свойство UseJournalQueue установлено при создании очереди значением True, каждое сообщение дублируется в журнальной очереди. Для удаления журнальной копии очереди TestQ применяется следующий фрагмент кода:

MessageQueue q = new MessageQueue(".Private$TestQJournal$");

q.Purge();

 

 

Рекомендуемые программные средства и литература

Для выполнения данной лабораторной работы следует использовать языки C# или Visual Basic .NET.

Рекомендуемая литература по созданию многопоточных приложений на VB .NET:

1. Петрусос Е. Эффективная работа: Visual Basic .NET.-СПб.: Питер, 2002. 928 с.

2. Корнелл Г., Моррисон Дж. Программирование на VB. NET: учебный курс. СПб.: Питер, 2002. 400 с.

3. Эппламан Д. Переход на VB .NET: стратегии, концепции, код. CПб.: Питер, 2002. 464 c.

Рекомендуемая литература по созданию многопоточных приложений на C#:

1. Троелсен Э. С# и платформа .NET. СПб.: Питер, 2003. 800 с.

2. Секунов Н.Ю. Разработка приложений на С++ и С#. СПб.: Питер, 2003. 608 с.

3. Шилдт Г. С#. СПб.: Питер, 2003. 512 с.

 

Отчётность:

В результате выполнения лабораторной работы должны бать представлены следующие материалы:

1. Программа;

2. Исходные тексты;

3. Презентация работы;

4. Презентация, в которой освещаются вопросы реализации алгоритма балансировки

 

– Конец работы –

Эта тема принадлежит разделу:

По специальному курсу Распределенные системы и алгоритмы

Распределенные системы и алгоритмы миков а и замятина е б лабораторные работы должны быть выполнены.. перемещение объектов.. после принятия решений о балансировке происходит перемещение объектов среди процессоров для достижения нового баланса..

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Настройка MSMQ

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Миков А.И., Замятина Е.Б.
2007 г. Лабораторные работы должны быть выполнены магистрами 1 года обучения, которые изучают курс «Распределенные системы и алгоритмы» и обучаются по специальности 010501,010500 (нап

Оценка загрузки
На этом этапе осуществляется приблизительная оценка загрузки каждого процессора. Полученная информация о загрузке используется в качестве базы данных для процесса балансировки, во-первых, для опред

Инициализация балансировки загрузки
Для продуктивности балансировки необходимо каким-то образом определять момент ее инициализации. Для этого следует: · Определить момент возникновения дисбаланса загрузки.

Принятие решений в процессе балансировки
Большинство стратегий динамической балансировки загрузки можно отнести к классу централизованных или к классу полностью распределенных. При централизованной стратегии

Использование .NET Remoting
.NET Framework Remoting является технологией, на основе которой становится возможным взаимодействие между процессами. Структура удаленного доступа, также называемая .NET Remoting или просто Remotin

MarshalByRefObject
Имеется два способа, которыми клиент может взаимодействовать с объектами, расположенными на сервере. Во-первых, мы можем передавать клиенту ссылку на объект, выполняющийся на сервере. Клиент будет

Форматер
Когда данные передаются между процессами при помощи Remoting или веб-служб, они должны посылаться в формате, понимаемом как клиентом, так и сервером. Существует возможность создать свой собственный

Принципы работы с каналами/форматерами
Комбинация канал/форматер является важным решением, которое мы должны принять при разработке. Использование настроечные файлов позволяет динамически изменять форматер и канал после развертывания пр

Создание объекта с возможностью удаленного доступа
В данной лабораторной работе необходимо создать объект, который будет размещаться на сервере и вызываться клиентом через канал HTTP с использованием форматера канала HTTP по умолчанию (форматера SO

Создание сервера
Теперь, когда мы создали объект, нам требуется поместить этот объект на нашем сервере. Объект удаленного доступа требует наличия сервера, который предоставляет этот объект через порт клиентам. Кажд

Создание клиента
Теперь, когда сервер установлен нам требуется создать клиента. Создание объекта Order является точно таким же процессом, что и создание локального объекта, за исключением того, что среда выполнения

Использование волнового алгоритма
При передаче сообщений (передача сообщений о загрузке компьютера) в сети с определенной топологией следует воспользоваться волновыми алгоритмами. В нашем случае топология сети – неориентированное д

Алгоритм Финна
Алгоритм Финна – еще один волновой алгоритм, который можно использовать в ориентированных сетях произвольной топологии. Он не требует того, чтобы диаметр сети был известен заранее, но подразумевает

Служба очередей сообщений
MSMQ— это приложение, гарантирующее надежную посылку и получение сообщении. Сообщения могут быть всем, чем угодно, начиная от XML-файлов и заканчивая наборами записей ADO и документами Microsoft Wo

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги