1. Mesaj Gönderilir
Bir uygulama veri veya komut içeren bir mesaj oluşturur ve hedef kuyruğa gönderir.
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'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.
Bir uygulama veri veya komut içeren bir mesaj oluşturur ve hedef kuyruğa gönderir.
Mesaj Queue Manager tarafından kuyruğa alınır ve alıcı uygulamanın hazır olmasını bekler.
Alıcı uygulama kuyruğa bağlanarak bekleyen mesajları okur ve işler.
Mesajın içeriğine göre veri kaydedilebilir, bir işlem başlatılabilir veya başka bir sisteme aktarılabilir.
EOS SCADA MSMQ istemcisinde veri adresi, MSMQ veri yapısındaki satır numarası kullanılarak belirlenir.
Örneğin 27 numaralı satırdaki veriye erişmek için:
MSMQ veri adresinde satır numarasının sayısal bir değer olması gerekir.
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.
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.
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.
Gönderici ve alıcı uygulamaların aynı anda çalışması gerekmeden mesaj alışverişi yapılabilir.
Mesajlar alıcı uygulama hazır oluncaya kadar kuyrukta tutulabilir. Böylece uygulamalar arasındaki zamanlama bağımlılığı azaltılır.
MSMQ, dağıtık uygulamalarda mesajların güvenilir şekilde aktarılması için mesaj kuyruğu altyapısı sağlar.
Mesajlar öncelik bilgileriyle birlikte yönetilebilir. Kritik mesajların daha yüksek öncelikle işlenmesi sağlanabilir.
Dağıtık sistemlerde mesajların farklı bilgisayarlar ve kuyruklar arasında aktarılması desteklenebilir.
Windows güvenlik mekanizmaları ve MSMQ'nun sağladığı güvenlik özellikleri kullanılarak mesajlaşma sistemlerinin erişimi kontrol edilebilir.
Farklı bilgisayarlarda çalışan uygulamalar arasında gevşek bağlı ve asenkron bir iletişim altyapısı oluşturulabilir.
MSMQ, Windows işletim sistemi ve .NET tabanlı uygulamalarla birlikte kullanılabilen bir mesajlaşma altyapısıdır.
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.
Ö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.
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.
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'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.
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 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.
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 veya Data Logger uygulamalarından başka uygulamalara veri ve durum mesajlarının aktarılması.
SCADA alarm olaylarının bildirim, analiz veya başka bir uygulama tarafından işlenmek üzere kuyruklara gönderilmesi.
Olay kayıtlarının başka bir uygulamaya güvenilir şekilde aktarılması ve sıraya alınması.
Toplanan verilerin analiz, raporlama veya yapay zeka uygulamalarına mesaj kuyruğu üzerinden aktarılması.
Farklı bilgisayarlarda çalışan endüstriyel yazılım bileşenlerinin birbirinden bağımsız olarak haberleşmesini sağlama.
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 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 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.
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.
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.
İndirilebilir MSMQ araçları, yardımcı uygulamalar, test araçları ve örnek projeler hazırlandıkça burada yayınlanacaktır.