Net і c #, архітектура message queuing

В Message Queuing повідомлення записуються і читаються зі спеціальної черги повідомлень. Самі повідомлення і черги повідомлень мають кілька атрибутів, які вимагають пояснень.

Повідомлення надсилається в чергу повідомлень. Повідомлення включає тіло, що містить пересилаються дані, і мітку - заголовок повідомлення. У тіло повідомлення може бути поміщена будь-яка інформація. В .NET є набір форматіровщіков, що перетворюють дані, які містяться в тіло. Крім мітки і тіла повідомлення включає додаткову інформацію про відправника, конфігурацію таймаута, ідентифікатор транзакції або пріоритет.

Черги повідомлень містять повідомлення декількох типів:

Нормальне повідомлення відправляється будь-яким додатком.

Що підтверджує повідомлення (acknowledgment message) повідомляє про стан нормального сполучення. Підтверджують повідомлення відправляються в адміністративні черзі, щоб повідомити про успіх або збої при відправці нормальних повідомлень.

Відповідні повідомлення відправляються приймають додатком, коли вихідний відправник вимагає деякого спеціального відповіді.

Повідомлення мають два режими доставки: експрес (express) і відновити події (recoverable). Експрес-повідомлення доставляються дуже швидко, тому що в якості сховища черзі використовується оперативна пам'ять. Відновлюваністю повідомлення зберігаються в файлах на кожному кроці маршруту - до тих пір, поки вони не будуть доставлені. Таким чином, доставка повідомлень гарантується, навіть якщо комп'ютер буде перевантажений або станеться збій мережі.

Транзакційні повідомлення - це спеціальна версія відновлюваних повідомлень. Завдяки транзакційних повідомленнями гарантується, що вони будуть доставлені тільки одного разу, і в тому ж порядку, в якому були відправлені. З транзакційними повідомленнями пріоритети не використовуються.

черга повідомлень

Черга повідомлень являє собою свого роду "накопичувальний бункер" для повідомлень. Повідомлення, які зберігаються на диску, розміщуються в каталозі \ System32 \ msmq \ storage.

Загальнодоступні або приватні черзі зазвичай застосовуються для відправки повідомлень, але існують також і інші типи черг.

Типи черг повідомлень MSMQ

Загальнодоступна (public) чергу

У середовищі робочої групи (Workgroup) неможливо створювати загальнодоступні черзі, тому що їм потрібна служба Active Directory.

Приватні (private) черги

Чи не публікуються в Active Directory. Ці черги доступні, тільки коли відомі їхні повні шляхові імена. Приватні черзі можуть використовуватися в середовищі Workgroup.

Журнальні (journal) черги

Служать для зберігання копій повідомлень після того, як вони були отримані або відправлені. Включення протоколювання для загальнодоступною або приватною черзі автоматично створює журнальну чергу. Журнальні черзі бувають двох типів: вихідне протоколювання і цільове протоколювання. Початкове протоколювання включається властивостями повідомлення - журнальні повідомлення зберігаються на вихідній системі. Цільове протоколювання включається властивостями черзі - ці повідомлення зберігаються в журнальній черзі цільової системи.

Черги мертвих листів (dead-letter)

Зберігають повідомлення, якщо вони не з'являються на цільовій системі після закінчення певного періоду часу. На противагу синхронного програмування, де помилки виявляються негайно, при використанні Message Queuing помилки повинні оброблятися інакше. Черга мертвих листів можна перевіряти для виявлення не доставлених повідомлень.

Містять підтвердження про надіслані повідомлення. Відправник може вказати адміністративну чергу, з якої він буде отримувати повідомлення про успішну відправку повідомлень.

Застосовується, коли потрібно щось більше, ніж просте підтвердження про факт відправки в якості відповіді з боку одержувача. Приймаюча програма може посилати відповідні повідомлення назад вихідного відправнику.

Є приватними і використовуються самою системою Message Queuing. Ці черги призначені для адміністративних повідомлень, зберігання повідомлень і забезпечення правильного порядку доставки транзакційних повідомлень.

Адміністративні інструменти для роботи з Message Queuing

Перш ніж переходити до розгляду програмного взаємодії з Message Queuing, слід ознайомитися з адміністративними інструментами, які поставляються в складі операційної системи Windows для створення і управління чергами та повідомленнями.

Описані тут інструменти застосовуються для роботи не тільки з Message Queuing. Можливості, що стосуються Message Queuing, стають доступними в цих інструментах тільки після установки Message Queuing в системі.

Створення черг повідомлень

Черги повідомлень можуть створюватися за допомогою оснастки Computer Management (Керування комп'ютером) консолі управління MMC. В системі Windows 7 оснащення Computer Management можна запустити, вибравши в меню Start (Пуск) пункт Control Panel -> Administrative Tools -> Computer Management (Панель управління -> Адміністрування -> Керування комп'ютером). В панелі деревоподібного уявлення Message Queuing знаходиться нижче елемента Services and Applications (Служби і додатки).

Вибравши Private Queues (Приватні черзі) або Public Queues (Загальнодоступні черзі), можна створити нову чергу з меню Action (Дія), як показано на малюнку. З загальнодоступними чергами можна працювати, тільки якщо Message Queuing налаштована в режимі Active Directory:

Net і c #, архітектура message queuing

Властивості Message Queuing

Після створення черги в оснащенні Computer Management можна модифікувати її властивості, виділивши чергу в деревовидної панелі і вибравши в меню пункт Action -> Properties (Дія -> Властивості):

Net і c #, архітектура message queuing

Тут для конфігурації доступно кілька опцій:

Label (Мітка) - ім'я черги, яке може використовуватися для її пошуку.

Звітні черзі, як було сказано раніше, використовують специфічний ідентифікатор типу. Type ID являє собою універсальний унікальний ідентифікатор (UUID) або глобально унікальний ідентифікатор (GUID).

Спеціальні ідентифікатори типу можуть бути створені утилітами uuidgen.exe або guidgen.exe. Утиліта uuidgen.exe - це інструмент командного рядка, службовець для створення унікальних ідентифікаторів, а guidgen.exe - графічна її версія для створення UUID.
  • Щоб уникнути переповнення диска, максимальний розмір всіх повідомлень (Limit message storage to (KB)) в черзі може обмежуватися.

    Опція Privacy Level (Рівень конфідеціальності) дозволяє шифрувати вміст повідомлення. Можливі значення: None (Немає), Optional (Необов'язково) або Body (Тіло). None означає, що шифровані повідомлення не приймаються, Body - приймаються тільки шифровані повідомлення, а значення за замовчуванням Optional - приймаються ті і інші.

    Цільове протоколювання може бути налаштоване опцією Journal (Журнал). За допомогою цієї опції забезпечується збереження в журналі копій прийнятих повідомлень. Для журнальних повідомлень черзі може бути вказаний максимальний розмір зайнятого дискового простору. Після досягнення максимального розміру цільової журнал очищається.