Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 304494|Відповідь: 72

[Джерело] c# Використання черги повідомлень MessageQueue з вихідним кодом

  [Копіювати посилання]
Опубліковано 14.12.2016 13:51:37 | | | |

За допомогою MSMQ (Microsoft Message Queue) розробники додатків можуть зручно швидко та надійно спілкуватися з додатками, надсилаючи та отримуючи повідомлення. Обробка повідомлень надає надійний безвідмовний метод для гарантованого обміну повідомленнями та виконання багатьох бізнес-процесів.

MSMQ, як і XML Web Services та .Net Remoting, є технологією розподіленої розробки. Однак при використанні XML Web Services або компонентів .Net Remoting клієнт повинен обмінюватися інформацією з сервером у реальному часі, а сервер має залишатися онлайн. MSMQ може працювати, коли сервер офлайн, тимчасово зберігаючи повідомлення в черзі повідомлень на стороні клієнта, а потім надсилаючи його на сервер для обробки, коли воно онлайн.

Очевидно, що MSMQ не підходить для ситуації, коли клієнт має своєчасно відповідати з сервера, а MSMQ взаємодіє з сервером асинхронно, тому немає потреби довго чекати обробки сервера.



Хоча і XML Web Services, і .Net Remoting надають властивість [OneWay] для обробки асинхронних викликів, вона використовується для вирішення проблеми довгих викликів методів на стороні сервера, які довго блокували клієнтську сторону. Однак це не може вирішити проблему великого навантаження на клієнта, і сервер приймає запити швидше, ніж обробляє.

Загалом, атрибут [OneWay] не використовується у спеціалізованих сервісах обміну повідомленнями.



1. Основні терміни та поняття

«Повідомлення» — це одиниця даних, яка передається між двома комп'ютерами. Повідомлення можуть бути дуже простими, наприклад, містити лише текстові рядки; Він також може бути складнішим і містити вбудовані об'єкти.



Повідомлення надсилаються до черги. «Черга повідомлень» — це контейнер, який зберігає повідомлення під час їх передачі. Менеджер черги повідомлень виступає посередником при передачі повідомлень від джерела до пункту призначення. Головна мета черги — забезпечити маршрутизацію та гарантувати доставку повідомлень; Якщо отримувач недоступний на момент відправлення повідомлення, черга повідомлень утримує повідомлення до успішної доставки.



«Черга повідомлень» — це технологія обробки повідомлень компанії Microsoft, яка забезпечує можливості обробки повідомлень і створення черги для будь-якого додатку на будь-якій комбінації комп'ютерів із встановленою Microsoft Windows, незалежно від того, чи знаходяться вони в одній мережі чи онлайні одночасно.



«Мережа черги повідомлень» — це будь-яка група комп'ютерів, які можуть передавати повідомлення один одному. Різні комп'ютери в мережі відіграють різні ролі у забезпеченні плавної обробки повідомлень. Деякі з них надають інформацію про маршрутизацію для визначення способу надсилання повідомлень, деякі містять важливу інформацію про всю мережу, а деякі просто надсилають і отримують повідомлення.



Під час встановлення черги повідомлень адміністратори визначають, які сервери можуть взаємодіяти між собою, і встановлюють спеціальні ролі для конкретних серверів. Комп'ютери, що складають цю мережу «черг повідомлень», називаються «сайтами» і з'єднані між собою «посиланнями на сайт». Кожне sitelink має відповідний «накладний витрат», який визначається адміністратором і показує, як часто повідомлення надходять через це посилання.



Адміністратор черги повідомлень також налаштовує один або кілька комп'ютерів у мережі, які виконують функції серверів маршрутизації. Сервер маршрутизації аналізує накладні витрати кожного sitelink, щоб визначити найшвидший і найефективніший спосіб доставки повідомлення через кілька сайтів і визначити, як його доставити.



2. Тип черги

Існує два основних типи черг: черги, створені вами або іншими користувачами у вашій мережі, та системні черги.

Черга, створена користувачем, може бути будь-якою з наступних:

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

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

Керуюча черга містить повідомлення, які підтверджують отримання повідомлень, надісланих у заданій мережі черги повідомлень. Вкажіть чергу управління, яку компонент MessageQueue має використовувати, якщо він є.

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



Черги, які генерує система, зазвичай поділяються на такі категорії:

Journal Queue за бажанням зберігає копії надісланих повідомлень і копії видалених із черги. Одна черга журналу на кожному клієнті черги повідомлень зберігає копію повідомлень, надісланих з цього комп'ютера. Для кожної черги на сервері створюється окрема щоденнична черга. Цей журнал відстежує повідомлення, які видаляються з цієї черги.

Черга мертвих листів зберігає копії повідомлень, які не можуть бути доставлені або мають прострочений термін дії. Якщо повідомлення, яке закінчується або не може бути доставлене, є транзакційним, воно зберігається у спеціальній черзі мертвих літер, яка називається «транзакційною чергою мертвих літер». Мертві листи зберігаються на комп'ютері, де знаходиться прострочене повідомлення. Для детальнішої інформації про повідомлення про тайм-аут і закінчення терміну дії дивіться у розділі «Властивості повідомлення за замовчуванням».

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

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

Більшість роботи в додатку пов'язана з доступом до публічних черг і їхніх повідомлень. Однак, залежно від щоденного ведення журналу, підтвердження та інших спеціальних потреб у обробці, ймовірно, у щоденних операціях буде використовуватися кілька різних системних черг.



3. Синхронна проти асинхронної комунікації

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



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



4. Взаємодія з чергами повідомлень

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

Стабільність – Відмови компонентів впливають на повідомлення значно менше, ніж прямі дзвінки між компонентами, оскільки повідомлення зберігаються в черзі і залишаються там до належної обробки. Обробка повідомлень схожа на обробку транзакцій тим, що обробка повідомлень гарантована.
Пріоритетність повідомлень – Більш термінові або важливі повідомлення можна отримати раніше за відносно незначні, щоб гарантувати достатній час відповіді для критичних застосувань.
Офлайн-можливість – Коли повідомлення надсилаються, їх можна відправити у тимчасову чергу, і вони залишаються там до успішної доставки. Коли доступ до бажаної черги недоступний з будь-якої причини, користувач може продовжити дії. Водночас інші операції можуть продовжуватися так, ніби повідомлення оброблене, оскільки доставка повідомлення гарантована при відновленні мережевого з'єднання.
Транзакційна обробка повідомлень – Об'єднайте кілька пов'язаних повідомлень в одну транзакцію, щоб гарантувати, що повідомлення доставляються послідовно, лише один раз, і можуть бути успішно отримані з їхньої черги призначення. Якщо виникають помилки, вся транзакція скасовується.
Безпека – технологія черги повідомлень, на якій базується компонент MessageQueue, використовує Windows Security для забезпечення контролю доступу, аудиту, а також шифрування та автентифікації повідомлень, надісланих і отриманих компонентом.


5. Написати просту програму для черги повідомлень у середовищі .Net

(1) Спочатку встановити сервіси черги повідомлень

Встановіть MSMQ через Панель керування, крок «Додати/Видалити програми» – «Додати/Видалити компоненти Windows».

MSMQ можна встановити як у режимі робочої групи, так і в доменному режимі. Якщо інсталятор не знаходить сервер із чергою повідомлень, що надає служби каталогу, його можна встановити лише в режимі робочої групи, і черга повідомлень на цьому комп'ютері підтримує лише створення приватних черг і прямих підключень до інших комп'ютерів, що виконують черги повідомлень.



(2) Налаштувати MSMQ

Відкрити управління комп'ютером – Поставити в чергу повідомлення та створити чергу MSMQDemo у розділі Приватні черги


(3) Написати код — просто продемонструвати об'єкт MSMQ

Клас MessageQueue — це обгортка навколо «черги повідомлень». Клас MessageQueue надає посилання на чергу Message Queue. Ви можете вказати шлях до існуючого ресурсу в конструкторі MessageQueue або створити нову чергу на сервері. Перш ніж викликати Відправити, Підглянути або Прийняти, потрібно асоціювати новий екземпляр класу MessageQueue з існуючою чергою.



MessageQueue підтримує два типи пошуку повідомлень: синхронне та асинхронне. Синхронізовані методи Peek і Receive змушують потік процесу чекати на прибуття нового повідомлення в чергу у визначений проміжок часу. Асинхронні методи BeginPeek і BeginReceive дозволяють основному задачі додатку продовжувати виконання в окремому потоці до того, як повідомлення потрапить у чергу. Ці методи працюють шляхом використання об'єктів зворотного виклику та об'єктів стану для полегшення інформаційної передачі між потоками.


Завантаження вихідного коду:

Туристи, якщо ви хочете побачити прихований контент цього допису, будь ласкаВідповідь





Попередній:15 добре. .NET
Наступний:C#/.NET зчитує вихідний код хеш-інформації торрент-торренту
Опубліковано 13.06.2021 20:54:46 |
ДОБРЕ, ДОБРЕ, ДОБРЕ.
Опубліковано 22.02.2019 11:01:34 |
https://download.csdn.net/download/winrich/9585398
Опубліковано 21.07.2021 11:20:26 |
Добре, добре
Опубліковано 21.12.2016 23:04:53 |
Дякую, орендодавець
Опубліковано 28.12.2016 19:20:26 |
Перегляньте цей поточний варіант, щоб виконати цю вправу
Опубліковано 14.07.2017 16:32:06 |
Дякую, орендодавцю。。。。。。。
Опубліковано 18.10.2017 14:26:45 |
Вчіться у лідерів груп
Опубліковано 24.10.2017 05:39:19 |
Вивчи це
Опубліковано 18.11.2017 21:56:57 |
ОООООООООООООООО
Опубліковано 14.12.2017 14:04:20 |
На хороші пости потрібно відповідати
Опубліковано 16.12.2017 21:49:55 |
213123саедваеас
Опубліковано 17.12.2017 08:56:11 |
Подивись, що говорять
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com