MSMQ Nedir?

MSMQ (Microsoft Message Queuing), farklı uygulamaların ve bilgisayarların birbirleriyle mesajlar üzerinden iletişim kurmasını sağlayan Windows tabanlı bir mesajlaşma altyapısıdır.

Geleneksel uygulama iletişiminde gönderici uygulama, alıcı uygulamaya doğrudan bağlanarak veriyi iletmeye çalışır. MSMQ yaklaşımında ise gönderici mesajı doğrudan uygulamaya göndermek yerine bir kuyruğa bırakır. Alıcı uygulama mesajı daha sonra bu kuyruktan okuyabilir.

Böylece iki uygulamanın aynı anda çalışması zorunlu olmaktan çıkar. Alıcı uygulama geçici olarak kapalı olsa bile mesaj kuyrukta tutulabilir ve uygulama tekrar çalışmaya başladığında mesajları işleyebilir.

Microsoft'un dokümantasyonunda MSMQ; asenkron ve güvenilir mesajlaşma, mesajların kuyruklarda kalıcı olarak tutulması, yönlendirme, güvenlik ve önceliklendirme gibi özellikler sağlayan bir iletişim hizmeti olarak tanımlanmaktadır.

MSMQ Nasıl Çalışır?

MSMQ'nun çalışma mantığını anlamanın en kolay yolu bir posta kutusu örneği düşünmektir. Gönderici uygulama mesajı kuyruğa bırakır. Mesaj kuyruk tarafından saklanır ve alıcı uygulama hazır olduğunda mesajı kuyruktan alır.

1. Mesaj Gönderilir

Bir uygulama veri veya komut içeren bir mesaj oluşturur ve hedef kuyruğa gönderir.

2. Mesaj Kuyrukta Bekler

Mesaj Queue Manager tarafından kuyruğa alınır ve alıcı uygulamanın hazır olmasını bekler.

3. Alıcı Mesajı Okur

Alıcı uygulama kuyruğa bağlanarak bekleyen mesajları okur ve işler.

4. Mesaj İşlenir

Mesajın içeriğine göre veri kaydedilebilir, bir işlem başlatılabilir veya başka bir sisteme aktarılabilir.

EOS Yazılımlarıı İçin MSMQ Veri Adresleme (Q#)

EOS SCADA MSMQ istemcisinde veri adresi, MSMQ veri yapısındaki satır numarası kullanılarak belirlenir.

Q#ROW_NO

Örneğin 27 numaralı satırdaki veriye erişmek için:

Q#27

MSMQ veri adresinde satır numarasının sayısal bir değer olması gerekir.

Queue ve Queue Manager

MSMQ mimarisinin temel bileşenlerinden biri Queue Manager'dır. Queue Manager, bilgisayardaki mesaj kuyruklarının yönetilmesinden ve mesajların alınması, gönderilmesi ve işlenmesiyle ilgili işlemlerden sorumludur.

Bir uygulama MSMQ kullanarak mesaj göndermek veya almak istediğinde Queue Manager ile iletişim kurar. Queue Manager ayrıca farklı bilgisayarlardaki Queue Manager bileşenleri arasında mesaj aktarımının gerçekleştirilmesinde de rol oynar.

Queue

Mesajların geçici veya kalıcı olarak tutulduğu mantıksal mesaj kutusudur. Bir uygulama bir kuyruğa mesaj gönderebilir ve başka bir uygulama bu mesajları daha sonra okuyabilir.

Queue Manager

Kuyrukların ve mesajların yönetilmesini sağlayan MSMQ servis bileşenidir. Uygulamalar ile mesaj kuyruğu arasındaki temel iletişim katmanlarından biridir.

MSMQ Özellikleri

Asenkron Mesajlaşma

Gönderici ve alıcı uygulamaların aynı anda çalışması gerekmeden mesaj alışverişi yapılabilir.

Mesajların Kuyrukta Saklanması

Mesajlar alıcı uygulama hazır oluncaya kadar kuyrukta tutulabilir. Böylece uygulamalar arasındaki zamanlama bağımlılığı azaltılır.

Güvenilir Mesajlaşma

MSMQ, dağıtık uygulamalarda mesajların güvenilir şekilde aktarılması için mesaj kuyruğu altyapısı sağlar.

Mesaj Önceliği

Mesajlar öncelik bilgileriyle birlikte yönetilebilir. Kritik mesajların daha yüksek öncelikle işlenmesi sağlanabilir.

Mesaj Yönlendirme

Dağıtık sistemlerde mesajların farklı bilgisayarlar ve kuyruklar arasında aktarılması desteklenebilir.

Güvenlik

Windows güvenlik mekanizmaları ve MSMQ'nun sağladığı güvenlik özellikleri kullanılarak mesajlaşma sistemlerinin erişimi kontrol edilebilir.

Dağıtık Uygulamalar

Farklı bilgisayarlarda çalışan uygulamalar arasında gevşek bağlı ve asenkron bir iletişim altyapısı oluşturulabilir.

Windows Entegrasyonu

MSMQ, Windows işletim sistemi ve .NET tabanlı uygulamalarla birlikte kullanılabilen bir mesajlaşma altyapısıdır.

MSMQ Mesajları

MSMQ'da mesaj, bir uygulamadan başka bir uygulamaya gönderilen bilgi birimidir. Mesajın içerisinde uygulama tarafından belirlenen veri bulunabileceği gibi mesajın teslim şekli ve işlenmesiyle ilgili özellikler de bulunabilir.

Örneğin bir endüstriyel uygulamada mesaj içeriği; bir alarm bilgisi, cihaz durumu, ölçüm değeri, operatör komutu veya bir olay kaydı olabilir.

Mesajın içeriğinin nasıl yorumlanacağı ise gönderen ve alan uygulamalar tarafından belirlenir. Bu nedenle MSMQ, mesajın uygulama açısından ne anlama geldiğini belirleyen bir endüstriyel veri modeli değildir.

MSMQ Kuyruk Türleri

Private Queue

Özel kuyruklar yerel Queue Manager tarafından yönetilir ve Active Directory içerisinde genel bir kuyruk olarak yayınlanmaz. Özellikle belirli bir bilgisayarda çalışan uygulamalar arasında mesajlaşma için kullanılabilir.

Public Queue

Genel kuyruklar ağ ortamında daha geniş bir kullanım için yapılandırılabilir ve Active Directory ile entegre ortamlarda keşfedilebilir.

Kullanılacak kuyruk türü, uygulamanın çalışma mimarisine, ağ yapısına ve güvenlik gereksinimlerine göre belirlenir.

Güvenilir Mesajlaşma

MSMQ'nun önemli avantajlarından biri, uygulamalar arasındaki iletişimi doğrudan bağlantıdan ayırabilmesidir. Gönderici uygulama mesajı kuyruğa bıraktıktan sonra alıcı uygulamanın hemen cevap vermesini beklemek zorunda değildir.

Bu yaklaşım özellikle geçici ağ kesintileri, uygulama yeniden başlatmaları veya farklı hızlarda çalışan sistemlerin birbirleriyle iletişim kurması gereken durumlarda yararlı olabilir.

Böylece hızlı çalışan bir veri toplama uygulaması, daha yavaş çalışan bir kayıt veya analiz uygulamasına verileri doğrudan bağlanmak zorunda kalmadan mesaj kuyruğu üzerinden aktarabilir.

MSMQ'nun Kullandığı İletişim Yapısı

MSMQ'yu tek bir ağ protokolü olarak düşünmek yerine, Message Queuing hizmetinin kullandığı bir protokol ailesi olarak değerlendirmek daha doğrudur.

Microsoft'un MSMQ protokol dokümantasyonunda mesaj aktarımı, Queue Manager ile istemci arasındaki iletişim, yönetim, uzak kuyruk okuma ve dizin hizmetleri gibi farklı amaçlara yönelik çeşitli protokoller tanımlanmaktadır.

  • Queue Manager Client Protocol
  • Binary Reliable Messaging Protocol
  • SOAP Reliable Messaging Protocol (SRMP)
  • Queue Manager Management Protocol
  • Queue Manager Remote Read Protocol
  • Directory Service protokolleri

Bu yapı sayesinde MSMQ, yalnızca uygulama içindeki kuyruk işlemlerini değil, farklı bilgisayarlardaki Queue Manager bileşenleri arasındaki mesaj aktarımını ve yönetim işlemlerini de destekler.

MSMQ ve Ağ Haberleşmesi

MSMQ farklı iletişim mekanizmaları kullanabilir. Geleneksel MSMQ mesaj aktarımında TCP/IP ve UDP tabanlı iletişim kullanılabilir. Microsoft'un Windows Server ağ gereksinimleri dokümantasyonunda MSMQ için kullanılan başlıca servis portları arasında TCP/UDP 1801 de yer almaktadır.

MSMQ'nun HTTP tabanlı iletişim mekanizması olan SRMP (SOAP Reliable Messaging Protocol) ise SOAP mesajlarını HTTP veya HTTPS üzerinden aktarabilir.

HTTP/HTTPS tabanlı iletişim özellikle farklı ağlar arasındaki haberleşme senaryolarında kullanılabilecek bir alternatif sağlar.

Endüstriyel Sistemlerde MSMQ Kullanımı

MSMQ doğrudan bir PLC veya saha cihazı haberleşme protokolü değildir. Bunun yerine endüstriyel yazılımların kendi aralarında güvenilir şekilde veri ve olay alışverişi yapması için kullanılabilir.

Örneğin bir SCADA sistemi saha cihazlarından topladığı verileri doğrudan başka bir uygulamaya göndermek yerine MSMQ kuyruğuna bırakabilir. Veri işleme, raporlama, arşivleme veya analiz uygulamaları bu mesajları kuyruktan okuyabilir.

SCADA ve Veri Toplama

SCADA veya Data Logger uygulamalarından başka uygulamalara veri ve durum mesajlarının aktarılması.

Alarm Dağıtımı

SCADA alarm olaylarının bildirim, analiz veya başka bir uygulama tarafından işlenmek üzere kuyruklara gönderilmesi.

Event Recorder

Olay kayıtlarının başka bir uygulamaya güvenilir şekilde aktarılması ve sıraya alınması.

Veri Analizi

Toplanan verilerin analiz, raporlama veya yapay zeka uygulamalarına mesaj kuyruğu üzerinden aktarılması.

Dağıtık Yazılım Mimarileri

Farklı bilgisayarlarda çalışan endüstriyel yazılım bileşenlerinin birbirinden bağımsız olarak haberleşmesini sağlama.

Arka Plan İşlemleri

Kullanıcı arayüzünden bağımsız çalışan veri işleme, kayıt, raporlama ve bildirim servisleri arasında iletişim sağlama.

MSMQ ve MQTT Arasındaki Fark

MSMQ ve MQTT her ikisi de mesajlaşma amacıyla kullanılabilse de aynı teknoloji değildir.

Özellik MSMQ MQTT
Temel yaklaşım Mesaj kuyruğu Publish / Subscribe
Platform Windows / Microsoft ekosistemi Platform bağımsız
Tipik kullanım Dağıtık uygulamalar ve Windows servisleri IoT ve endüstriyel cihaz mesajlaşması
Mesaj yapısı Kuyruk tabanlı Topic tabanlı
İletişim modeli Queue Broker / Topic

Bu nedenle SCADA veya endüstriyel yazılım mimarisinde MSMQ ile MQTT birbirinin doğrudan alternatifi olmak zorunda değildir. Kullanım amacına göre iki teknoloji aynı sistem içerisinde farklı görevlerde de kullanılabilir.

MSMQ'nun Avantajları

  • Uygulamalar arasında asenkron iletişim kurulabilmesi.
  • Gönderici ve alıcı uygulamaların aynı anda çalışmasının zorunlu olmaması.
  • Mesajların kuyruk içerisinde tutulabilmesi.
  • Dağıtık uygulamalar için uygun bir iletişim modeli sunması.
  • Mesaj önceliklendirme özelliklerinin bulunması.
  • Windows güvenlik altyapısıyla birlikte kullanılabilmesi.
  • Windows servisleri ve .NET uygulamalarıyla entegre edilebilmesi.
  • Endüstriyel yazılımlar arasında veri, olay ve komut mesajlarının aktarılabilmesi.

MSMQ Kullanırken Dikkat Edilmesi Gerekenler

MSMQ güçlü bir mesajlaşma altyapısı olmakla birlikte, her uygulama için en uygun teknoloji değildir. Özellikle yeni bir sistem tasarlanırken işletim sistemi, uygulama mimarisi, ağ yapısı, güvenlik ve birlikte çalışabilirlik gereksinimleri dikkate alınmalıdır.

MSMQ özellikle Windows tabanlı uygulamaların yoğun olduğu ortamlarda anlamlı bir seçenek olabilir. Buna karşılık farklı işletim sistemleri, IoT cihazları veya çok geniş platform desteği gereken projelerde MQTT, AMQP veya başka modern mesajlaşma teknolojileri daha uygun olabilir.

Ayrıca bir mesaj kuyruğu sistemi kurulurken kuyrukların büyümesi, mesajların tüketilememesi, ağ bağlantısının kesilmesi, yetkilendirme ve hata yönetimi gibi konuların uygulama tasarımında ayrıca ele alınması gerekir.

Özet

MSMQ (Microsoft Message Queuing), Windows ortamlarında uygulamalar arasında güvenilir ve asenkron mesajlaşma sağlamak için geliştirilmiş bir mesaj kuyruğu teknolojisidir.

Temel fikir oldukça basittir: Bir uygulama mesajı kuyruğa bırakır, mesaj kuyrukta tutulur ve başka bir uygulama uygun olduğunda mesajı okuyarak işler.

Bu yapı sayesinde SCADA, Data Logger, Event Recorder, raporlama, veri analizi ve diğer endüstriyel yazılım bileşenleri arasında doğrudan bağlantıya ihtiyaç duymadan iletişim kurulabilir.

Özellikle Windows tabanlı dağıtık endüstriyel yazılım mimarilerinde MSMQ, uygulamalar arasında güvenilir bir mesajlaşma katmanı olarak değerlendirilebilir.

MSMQ Araçları

Bu bölümde MSMQ ile çalışmak, kuyrukları yönetmek, mesaj göndermek ve almak, bağlantıları test etmek ve MSMQ tabanlı uygulamalar geliştirmek için kullanılabilecek araçlar paylaşılacaktır.

EOS Endüstriyel Yazılım Portalı kapsamında hazırlanacak veya paylaşılacak MSMQ araçları ilerleyen dönemde bu bölümde yer alacaktır.

MSMQ Araçları Yakında

İndirilebilir MSMQ araçları, yardımcı uygulamalar, test araçları ve örnek projeler hazırlandıkça burada yayınlanacaktır.