Кіріспе

Java қолданбалық бағдарламалық интерфейсі
Jakarta Messaging API (бұрын Java Message Service немесе JMS API деп аталған) – бұл хабарға бағытталған делдалдық бағдарламалық жасақтама үшін Java қолданбалық бағдарламалық интерфейсі (API). Ол өндіруші-тұтынушы мәселесін шеше алатын, бағдарламалық жүйелер арасында хабар алмасуды жеңілдетуге арналған, жалпылама хабарлама модельдерін ұсынады. Jakarta Messaging – Jakarta EE құрамының бір бөлігі және бастапқыда Sun Microsystems компаниясында Java Community Process басшылығымен әзірленген спецификациямен анықталған.

Хабарламаның жалпы идеясы

Хабар алмасу – бұл әлсіз байланыстырылған, таратылған коммуникация түрі, мұнда "коммуникация" термині бағдарламалық құрамдастар арасындағы хабар алмасу ретінде түсініледі. Хабарға бағытталған технологиялар аралық құрамдасты енгізу арқылы тығыз байланысты коммуникацияны (мысалы, TCP желілік сокеттері, CORBA немесе RMI) жеңілдетуге тырысады. Бұл тәсіл бағдарламалық құрамдастардың бір-бірімен тікелей емес, жанама түрде байланысуына мүмкіндік береді. Бұл тәсілдің артықшылықтарының бірі – хабар жіберушілердің алушыларын нақты білу қажеттілігі болмайды. Хабар алмасудың пайдалары гетерогенді платформаларды интеграциялауға, жүйелік тұйықтарды азайтуға, жүйе кеңейтімділігін арттыруға және өзгерістерге жылдамрақ бейімделуге мүмкіндік береді.

Нұсқалар тарихы

JMS 1.0
JMS 1.0.1a (30 қазан, 1998)
JMS 1.0.2 (17 желтоқсан, 1999)
JMS 1.0.2a (23 желтоқсан, 1999)
JMS 1.0.2b (27 тамыз, 2001)
JMS 1.1 (12 сәуір, 2002)
JMS 2.0 (21 мамыр, 2013)
JMS 2.0a (16 наурыз, 2015)

JMS 2.0 қазіргі уақытта Java Community Process бағдарламасы аясында JSR 343 ретінде қолдауға алынып жатыр. JMS 3.0 Жакарта EE-нің құрамында әзірленуде.

Нысаннан нүктеге дейінгі модель

Нүктеден нүктеге хабар алмасу жүйесінде хабарламалар жеке тұтынушыларға жоналады, олар келіп түскен хабарламалардың кезектерін сақтайды. Бұл хабар алмасу түрі хабар кезектері, жіберушілер және қабылдаушылар тұжырымдамасына негізделген. Әрбір хабарлама нақты бір кезекке жіберіледі, ал қабылдаушы клиенттер өздеріне арналған хабарламаларды сақтау үшін құрылған кезектерден алады. Кез келген санындағы жіберушілер кезекке хабарлама жібере алады, бірақ әрбір хабарлама міндетті түрде жеткізіледі және бір тұтынушы ғана оны өңдейді. Кезектерге жіберілген барлық хабарламаларды хабарламалар өңделгенге дейін немесе олардың мерзімі біткенге дейін сақтайды. Егер хабарламаларды өңдеуге тіркелген тұтынушылар болмаса, кезек оларды тұтынушы тіркелгенге дейін сақтап тұрады.

Жариялау-жазылу үлгісі

Жариялау және жазылу үлгісі белгілі бір "тақырыпқа" хабарламаларды жариялауды қолдайды. Жазылушылар белгілі бір тақырып бойынша жарияланған хабарламаларды алуға қызығушылық білдіре алады. Бұл үлгіде жариялаушы да, жазылушы да бір-бірін танымайды. Бұл анонимді жариялау тақтасына ұқсас. Бір немесе бірнеше тұтынушы хабарламаны алады. Жариялаушылар мен жазылушылар арасында уақыт байланысы бар. Жариялаушы клиенттерге жазылу үшін хабарлама тақырыбын жасауы керек. Жазылушы хабарламаларды алу үшін үнемі қосылып тұруы керек, егер ол тұрақты жазылуды орнатпаса. Егер тұрақты жазылу орнатылса, жазылушы қосылмаған кезде жарияланған хабарламалар жазылушы қайта қосылғанда қайта жіберіледі. JMS деректерді жеткізудің көлік қабатынан қосымшаны бөлуге мүмкіндік береді. Java кластарының бірдей жиынтығы Java Naming and Directory Interface (JNDI) арқылы қажетті провайдер туралы ақпаратты пайдаланып, әртүрлі JMS провайдерлерімен байланыс орнату үшін қолданылуы мүмкін. Кластар кезекке немесе тақырыпқа қосылу үшін алдымен қосылыс фабрикасын пайдаланады, содан кейін хабарламаларды толтырып, жібереді немесе жариялайды. Алушы тарапында клиенттер хабарламаларды қабылдайды немесе жазылады.

URI схемасы

RFC 6167 Java Message Service үшін jms: URI схемасын анықтайды.