Ziņojumu rinda

Ziņojumu rinda (angļu: message queue) jeb ziņojumu rindošanas sistēma ir programminženierijas komponente, ko izmanto starpprocesu komunikācijai  vai starppavedienu saziņai tajā pašā procesā. Tā nodrošina asinhronas saziņas protokolu, kurā ziņojumu sūtītājam un saņēmējam nav nepieciešams vienlaicīgi mijiedarboties — ziņojumi tiek turēti rindā, līdz adresāts tos iegūst.
Ziņojumu rindas tiek izmantotas operētājsistēmās vai lietojumprogrammās, lai programmas varētu savstarpēji sazināties. Tās var izmantot arī ziņojumu nodošanai starp datorsistēmām.
Ziņojumu rindas paradigma ir līdzīga “publicēšana — abonēšana” modelim, un tā parasti ir daļa no lielākas uz ziņojumiem orientētas starpprogrammatūras sistēmas. Vairums ziņojumapmaiņas sistēmu savā lietojumprogrammas saskarnē (API) atbalsta gan ziņojumu rindas, gan “publicēšana — abonēšana” modeļus, piemēram, Java Message Service (JMS).

Pārskats

Ziņojumu rindas nodrošina asinhrono sakaru protokolu, kas nozīmē, ka ziņojuma sūtītājam un saņēmējam vienlaikus nav jāmijiedarbojas ar ziņojumu rindu. Ziņojumi, kas atrodas rindā, tiek saglabāti, līdz adresāts tos iegūst. Ziņojumu rindām ir netieši vai skaidri ierobežojumi attiecībā uz datu apjomu, ko var pārraidīt vienā ziņojumā, un uz ziņojumu skaitu, kas var palikt neizpildīti rindā.
Daudzas ziņojumu rindu realizācijas funkcionē iekšēji: operētājsistēmā vai lietojumprogrammā. Šādas rindas pastāv tikai šīs sistēmas vajadzībām.
Citas realizācijas ļauj nosūtīt ziņojumus starp dažādām datorsistēmām, potenciāli savienojot vairākas lietojumprogrammas un vairākas operētājsistēmas. Šīs ziņojumu rindošanas sistēmas parasti nodrošina uzlabotu elastīguma funkcionalitāti, lai nodrošinātu, ka ziņojumi sistēmas kļūmes gadījumā netiek “zaudēti”.
Ziņojumu rindas realizācija var būt kā īpašniekprogrammatūra, atvērtā pirmkoda programmatūra, aparatūras risinājums vai kā pakalpojums.
Īpašniekprogrammatūrai ir visgarākā vēsture, un tāda ir, piemēram, IBM MQ; ir produkti, kas saistīti ar noteiktām operētājsistēmām, piemēram, Microsoft Message Queuing.
Ziņojumu rindas komerciālas programmatūras piemēri ir IBM MQ un Oracle Advanced Queuing (AQ). Pastāv Java standarts Java Message Service, kam ir vairākas maksas un bezmaksas programmatūras realizācijas.
Ir daudzas atvērtā pirmkoda uz ziņojumiem orientētas starpprogrammatūras sistēmas, piemēram, Apache ActiveMQ, Apache Kafka, Apache Qpid, Apache RocketMQ, Beanstalkd, Enduro/X, HTTPSQS, JBoss Messaging, JORAM, RabbitMQ, Sun Open Message Queue un Tarantool.
Eksistē arī uz aparatūras bāzes veidotas ziņojumu apmaiņas sistēmas, kur programmatūra ir ierakstīta pusvadītāju atmiņā. Tādas ierīces piegādā, piemēram, Solace, Apigee un Tervela. IBM arī ierīcēm piedāvā savu MQ programmatūru.
Arvien populārākas kļūst mākoņdatošanas ziņojumu rindu pakalpojumu iespējas, piemēram, Amazon Simple Queue Service, StormMQ un IronMQ.
Lielākā daļa reāllaika operētājsistēmu (RLOS), piemēram, VxWorks un QNX, veicina ziņojumu rindošanas izmantošanu kā primāro starpprocesu vai starppavedienu saziņas mehānismu. No tā izrietošā ciešā integrācija starp ziņojumu apmaiņu un centrālā procesora plānošanu tiek uzskatīta par galveno iemeslu RLOS izmantojamībai reāllaika lietojumprogrammās. Erlang programmēšanas valoda izmanto procesus, lai nodrošinātu vienlaicīgumu; šie procesi sazinās asinhroni, izmantojot ziņojumu rindošanu.