Черга повідомлень (англ. Message queue) в програмуванні — механізм операційної системи, що використовується для організації взаємодії між процесами або взаємодії між потоками програми. Такі компоненти використовують чергу для впорядкування повідомлень.
Огляд
Черги повідомлень надають (асинхронний) протокол передавання даних, означаючи, що відправник і одержувач повідомлення не зобов'язані взаємодіяти з чергою повідомлень одночасно. Розміщені в черзі повідомлення зберігаються доти, поки не отримують їх.
Черги повідомлень мають неявні або явні обмеження на розмір даних, які можуть передаватися в одному повідомленні, і кількість повідомлень, які можуть залишатися в черзі.
Багато реалізацій черг повідомлень функціонують внутрішньо: всередині операційної системи або всередині застосунка. Такі черги існують тільки для цілей цієї системи.
Інші реалізації дозволяють передавати повідомлення між різними комп'ютерними системами, потенційно підключаючи кілька застосунків і кілька операційних систем. Ці системи черг повідомлень зазвичай забезпечують розширену функціональність для забезпечення стійкості, щоб гарантувати, що повідомлення не будуть «втрачені» в разі збою системи.
Застосування
Для реалізації черги повідомлень системний адміністратор встановлює і налаштовує програмне забезпечення для організації черг повідомлень (диспетчер черги або брокер) і визначає іменовану чергу повідомлень. Або вони реєструються в службі черг повідомлень.
Потім застосунок реєструє програмну процедуру, яка «слухає» повідомлення, поміщені в чергу.
Друге і наступні застосунки можуть підключатися до черги і передавати на неї повідомлення.
Програмне забезпечення менеджера черг зберігає повідомлення доти, поки що приймаюча програма не підключиться, а потім викличе зареєстровану програмну процедуру. Потім застосунок-одержувач обробляє повідомлення відповідним чином.
Існує безліч варіантів точної семантики передачі повідомлень, в тому числі:
- Довговічність — повідомлення можуть зберігатися в пам'яті, записуватися на диск або навіть передаватися в СУБД, якщо необхідність в надійності вказує на більш ресурсоємних рішення.
- Політика безпеки — які програми повинні мати доступ до цих повідомлень?
- Політика очищення повідомлень — черги або повідомлення можуть мати «час життя».
- Фільтрація повідомлень — деякі системи підтримують фільтрацію даних, так що абонент може бачити тільки повідомлення, відповідні заздалегідь певним критеріям.
- Політика доставки — чи повинні ми гарантувати доставку повідомлення хоча б один раз або не більше одного разу?
- Політика маршрутизації — в системі з багатьма серверами черзі: які сервери повинні отримувати повідомлення або повідомлення черзі?
- Політика дозування — чи повинні повідомлення доставлятися негайно? Або система повинна трохи почекати і спробувати доставити багато повідомлень одночасно?
- Критерії черговості — коли повідомлення має вважатися «вміщеним в чергу»? Коли в одній черзі? Або коли бути перенаправленим, принаймні, в одну віддалену чергу? Або до всіх черг?
- Повідомлення про одержання — видавцеві може знадобитися дізнатися, коли деякі або всі передплатники отримали повідомлення.
Всі ці фактори можуть істотно вплинути на семантику транзакцій, надійність і ефективність системи.
Стандарти і протоколи
Історично чергу повідомлень використовувала власні закриті протоколи, які обмежували здатність різних операційних систем або мов програмування взаємодіяти в гетерогенном безлічі середовищ.
З'явилися три стандарти, які використовуються в реалізаціях черги повідомлень з відкритим вихідним кодом:
- Advanced Message Queuing Protocol (AMQP) — багатофункціональний протокол черги повідомлень.
- STOMP (STOMP) — простий текстовий протокол повідомлень.
- MQTT (раніше MQ Telemetry Transport) — протокол полегшеної черги повідомлень, особливо для вбудованих пристроїв.
Ці протоколи знаходяться на різних стадіях стандартизації та реалізації. Перші два працюють на тому ж рівні, що і HTTP, MQTT на рівні (TCP/IP).
Синхронний або асинхронний
Багато з широко відомих протоколів зв'язку використовуються синхронно. Протокол HTTP, який використовується у Всесвітній павутині і в вебсервісах, пропонує наочний приклад, коли користувач відправляє запит на вебсторінку, а потім чекає відповіді.
Однак існують сценарії, в яких синхронна поведінка не підходить. Наприклад, AJAX (асинхронний JavaScript і XML) можна використовувати для асинхронної відправки текстових, JSON- або XML-повідомлень для поновлення частини вебсторінки з більш релевантною інформацією.
Реалізація в UNIX
В UNIX є 2 поширені реалізації черг. Одна є частиною SYS V API, а інша — частина POSIX.
Див. також
Посилання
- Bach, M.J. The Design of the UNIX Operating System. .
- Message Queuing (MSMQ) [ 9 травня 2015 у Wayback Machine.] (англ.)
Це незавершена стаття про інформаційні технології. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Cherga povidomlen angl Message queue v programuvanni mehanizm operacijnoyi sistemi sho vikoristovuyetsya dlya organizaciyi vzayemodiyi mizh procesami abo vzayemodiyi mizh potokami programi Taki komponenti vikoristovuyut chergu dlya vporyadkuvannya povidomlen OglyadChergi povidomlen nadayut asinhronnij protokol peredavannya danih oznachayuchi sho vidpravnik i oderzhuvach povidomlennya ne zobov yazani vzayemodiyati z chergoyu povidomlen odnochasno Rozmisheni v cherzi povidomlennya zberigayutsya doti poki ne otrimuyut yih Chergi povidomlen mayut neyavni abo yavni obmezhennya na rozmir danih yaki mozhut peredavatisya v odnomu povidomlenni i kilkist povidomlen yaki mozhut zalishatisya v cherzi Bagato realizacij cherg povidomlen funkcionuyut vnutrishno vseredini operacijnoyi sistemi abo vseredini zastosunka Taki chergi isnuyut tilki dlya cilej ciyeyi sistemi Inshi realizaciyi dozvolyayut peredavati povidomlennya mizh riznimi komp yuternimi sistemami potencijno pidklyuchayuchi kilka zastosunkiv i kilka operacijnih sistem Ci sistemi cherg povidomlen zazvichaj zabezpechuyut rozshirenu funkcionalnist dlya zabezpechennya stijkosti shob garantuvati sho povidomlennya ne budut vtracheni v razi zboyu sistemi ZastosuvannyaDlya realizaciyi chergi povidomlen sistemnij administrator vstanovlyuye i nalashtovuye programne zabezpechennya dlya organizaciyi cherg povidomlen dispetcher chergi abo broker i viznachaye imenovanu chergu povidomlen Abo voni reyestruyutsya v sluzhbi cherg povidomlen Potim zastosunok reyestruye programnu proceduru yaka sluhaye povidomlennya pomisheni v chergu Druge i nastupni zastosunki mozhut pidklyuchatisya do chergi i peredavati na neyi povidomlennya Programne zabezpechennya menedzhera cherg zberigaye povidomlennya doti poki sho prijmayucha programa ne pidklyuchitsya a potim vikliche zareyestrovanu programnu proceduru Potim zastosunok oderzhuvach obroblyaye povidomlennya vidpovidnim chinom Isnuye bezlich variantiv tochnoyi semantiki peredachi povidomlen v tomu chisli Dovgovichnist povidomlennya mozhut zberigatisya v pam yati zapisuvatisya na disk abo navit peredavatisya v SUBD yaksho neobhidnist v nadijnosti vkazuye na bilsh resursoyemnih rishennya Politika bezpeki yaki programi povinni mati dostup do cih povidomlen Politika ochishennya povidomlen chergi abo povidomlennya mozhut mati chas zhittya Filtraciya povidomlen deyaki sistemi pidtrimuyut filtraciyu danih tak sho abonent mozhe bachiti tilki povidomlennya vidpovidni zazdalegid pevnim kriteriyam Politika dostavki chi povinni mi garantuvati dostavku povidomlennya hocha b odin raz abo ne bilshe odnogo razu Politika marshrutizaciyi v sistemi z bagatma serverami cherzi yaki serveri povinni otrimuvati povidomlennya abo povidomlennya cherzi Politika dozuvannya chi povinni povidomlennya dostavlyatisya negajno Abo sistema povinna trohi pochekati i sprobuvati dostaviti bagato povidomlen odnochasno Kriteriyi chergovosti koli povidomlennya maye vvazhatisya vmishenim v chergu Koli v odnij cherzi Abo koli buti perenapravlenim prinajmni v odnu viddalenu chergu Abo do vsih cherg Povidomlennya pro oderzhannya vidavcevi mozhe znadobitisya diznatisya koli deyaki abo vsi peredplatniki otrimali povidomlennya Vsi ci faktori mozhut istotno vplinuti na semantiku tranzakcij nadijnist i efektivnist sistemi Standarti i protokoliIstorichno chergu povidomlen vikoristovuvala vlasni zakriti protokoli yaki obmezhuvali zdatnist riznih operacijnih sistem abo mov programuvannya vzayemodiyati v geterogennom bezlichi seredovish Z yavilisya tri standarti yaki vikoristovuyutsya v realizaciyah chergi povidomlen z vidkritim vihidnim kodom Advanced Message Queuing Protocol AMQP bagatofunkcionalnij protokol chergi povidomlen STOMP STOMP prostij tekstovij protokol povidomlen MQTT ranishe MQ Telemetry Transport protokol polegshenoyi chergi povidomlen osoblivo dlya vbudovanih pristroyiv Ci protokoli znahodyatsya na riznih stadiyah standartizaciyi ta realizaciyi Pershi dva pracyuyut na tomu zh rivni sho i HTTP MQTT na rivni TCP IP Sinhronnij abo asinhronnijBagato z shiroko vidomih protokoliv zv yazku vikoristovuyutsya sinhronno Protokol HTTP yakij vikoristovuyetsya u Vsesvitnij pavutini i v vebservisah proponuye naochnij priklad koli koristuvach vidpravlyaye zapit na vebstorinku a potim chekaye vidpovidi Odnak isnuyut scenariyi v yakih sinhronna povedinka ne pidhodit Napriklad AJAX asinhronnij JavaScript i XML mozhna vikoristovuvati dlya asinhronnoyi vidpravki tekstovih JSON abo XML povidomlen dlya ponovlennya chastini vebstorinki z bilsh relevantnoyu informaciyeyu Realizaciya v UNIXV UNIX ye 2 poshireni realizaciyi cherg Odna ye chastinoyu SYS V API a insha chastina POSIX Div takozhVzayemodiya mizh procesami Cherga struktura danih AMQP Amazon SQS Apache ActiveMQ Apache Qpid ru Java Message Service MQTT RabbitMQ MSMQPosilannyaBach M J The Design of the UNIX Operating System ISBN 9780132017992 Message Queuing MSMQ 9 travnya 2015 u Wayback Machine angl Ce nezavershena stattya pro informacijni tehnologiyi Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi