Blogs

SAP Integration Suite’de Büyük Mesajları Splitter ve Aggregator ile Nasıl İşlersiniz?

SAP Integration Suite’de büyük mesajları işlemenin en güvenilir yolu, Splitter ve Aggregator pattern’larını birlikte kullanmaktır. Splitter, binlerce kayıt içeren tek bir mesajı bağımsız işlenebilir parçalara böler; Aggregator ise bu parçaları ya da farklı kaynaklardan gelen ilişkili yanıtları yeniden tek bir anlamlı mesajda birleştirir. Bu yapı sayesinde bellek tüketimi düşer, paralel işleme mümkün hale gelir ve hata yönetimi sadeleşir. Bu rehberde her iki pattern’ın ne zaman ve nasıl kullanılacağını, SAP Integration Suite üzerindeki yapılandırma adımlarını ve gerçek senaryolardaki kullanım örneklerini ele alıyoruz. Entegrasyon akışlarınızı hem performans hem de sürdürülebilirlik açısından optimize etmek istiyorsanız okumaya devam edin.

Büyük Veri Akışında Neden Sorun Yaşarsınız?

Modern kurumsal entegrasyonlarda tek bir mesajın içinde binlerce satır sipariş, fatura ya da envanter kaydı barındırması son derece yaygındır. SAP Integration Suite bu mesajları varsayılan olarak tek bir iş birimi olarak işler; bu da şu sorunlara yol açar:

  • Bellek tüketimi: Tüm yük bellekte tutulduğu için büyük mesajlar OutOfMemory hatalarına neden olabilir.
  • Paralel işleme eksikliği: Kayıtlar sırayla işlenir, bu da gecikmeleri artırır.
  • Hata yönetimi zorluğu: Bir kaydın başarısız olması tüm akışı durdurabilir.
  • İzleme güçlüğü: Binlerce satırlık bir mesajı hata ayıklama aşamasında takip etmek son derece zordur.

Bu sorunları çözmek için SAP Integration Suite, Enterprise Integration Pattern (EIP) kitaplığından gelen Splitter ve Aggregator bileşenlerini sunar. Mesaj akışı içindeki teknik veriyi yönetmek için Header, Property ve Exchange kavramlarını da net biçimde ayırt etmek gerekir.

Splitter Pattern Nedir ve Nasıl Çalışır?

Splitter, tek ve büyük bir mesajı daha küçük, bağımsız işlenebilir mesajlara ayıran bir entegrasyon pattern’ıdır. SAP Cloud Integration’da Splitter bileşeni, mesajdaki belirli bir XML node’u veya JSON dizisini okuyarak her öğeyi ayrı bir mesaj olarak sonraki adımlara iletir.

SAP CPI’da Splitter Türleri

  • General Splitter: Bir XPath ifadesi veya token expression kullanarak mesajı böler. En sık kullanılan türdür.
  • Iterating Splitter: Her bir alt öğeyi sırayla işler; bellek kullanımı düşüktür, büyük dosyalar için idealdir.
  • PKCS7/XML Splitter: Şifreli veya dijital imzalı içerikleri ayırmak için kullanılır.

Gerçek Senaryo: Toplu Sipariş İşleme

Bir perakende şirketi, SAP S/4HANA’dan gelen toplu sipariş XML dosyasını üçüncü taraf bir lojistik sisteme göndermek istiyor. Dosyada 500–5.000 sipariş satırı bulunabiliyor. Tek mesaj olarak gönderildiğinde lojistik sistem zaman aşımı hatası veriyor.

Çözüm yaklaşımı:

  • General Splitter, XPath /Orders/Order ile mesajı her biri tek sipariş içeren alt mesajlara böler.
  • Her alt mesaj bağımsız olarak dönüşüm ve gönderim adımlarından geçer.
  • Başarısız olan sipariş yeniden deneme (retry) mekanizmasına takılırken diğerleri işlenmeye devam eder.

Bu yapı sayesinde lojistik sistem üzerindeki yük eşit dağıtılır ve akış izlenebilirliği ciddi ölçüde artar.

Aggregator Pattern Nedir ve Splitter ile Nasıl Tamamlanır?

Aggregator, bölünmüş mesajları ya da farklı kaynaklardan gelen ilişkili mesajları tek bir mesajda birleştiren pattern’dır. Splitter ile birlikte kullanıldığında Scatter-Gather veya Split-Process-Aggregate mimarisini oluşturur: mesajı böl, her parçayı ayrı ayrı işle, sonuçları birleştir.

SAP CPI’da Aggregator Yapılandırması

Aggregator bileşenini yapılandırırken üç kritik parametre belirlenir:

  • Correlation Expression: Hangi mesajların birbirine ait olduğunu tanımlar. Genellikle bir header değeri (örneğin batchId) kullanılır.
  • Completion Condition: Aggregator’ın ne zaman sonuç üretip sonraki adıma geçeceğini belirler. Örneğin belirli sayıda mesaj birikmesi veya bir timeout.
  • Aggregation Algorithm: Mesajların nasıl birleştirileceğini tanımlar: combineInSequence, combineAtXPath veya özel Groovy/XSLT script.

Mesajları birleştirmeden önce biçimlendirmek gerektiğinde Content Modifier ile mesaj dönüşümü adımı bu akışı tamamlar.

Gerçek Senaryo: Depo Stok Yanıtlarını Birleştirme

Bir üretim firması, farklı depo sistemlerinden stok yanıtlarını toplayıp SAP S/4HANA’ya tek bir konsolide mesaj olarak göndermek istiyor. Her depo ayrı bir REST API’ye sahip ve yanıt süreleri farklılık gösteriyor.

Uygulanan akış:

  • Multicast bileşeni mesajı paralel kollarla üç ayrı depo API’sine yönlendirir.
  • Her kol yanıtını almak üzere farklı bir HTTP adapter’ı kullanır.
  • Aggregator, correlation header olarak requestId’yi kullanarak üç yanıtı bekler; hepsi geldiğinde veya 30 saniyelik timeout dolduğunda birleştirir.
  • SAP S/4HANA’ya gönderilen nihai mesaj, tüm depolara ait stok verilerini içerir.

Splitter ve Aggregator’ı Birlikte Kullanırken Dikkat Edilmesi Gerekenler

Hata Yönetimi: Her Parça İçin Ayrı Strateji

Splitter ile bölünmüş mesajlarda hata yönetimi, tek mesaj senaryosuna kıyasla daha karmaşıktır. SAP CPI’da Exception Subprocess bileşenini her alt dal için ayrı ayrı tanımlamak gerekir. Başarısız olan mesajı Dead Letter Queue’ya (DLQ) ya da bir hata log tablosuna yönlendirmek, diğer mesajların işlenmesinin durmasını önler.

Bellek Yönetimi: Iterating Splitter Tercih Edin

General Splitter tüm mesajı belleğe alır; Iterating Splitter ise kayıtları stream olarak okur. 10.000 satırı aşan dosyalar için Iterating Splitter kullanmak, bellek hatalarını önlemenin en pratik yoludur. Paralel işleme (Parallel Processing) etkinleştirildiğinde performans kazanımı ciddi boyutlara ulaşabilir; ancak hedef sistemin eş zamanlı bağlantı kapasitesini göz önünde bulundurmak gerekir.

Aggregator Timeout Ayarı: Neden Kritiktir?

Completion Condition olarak yalnızca mesaj sayısı belirlenirse, bir mesajın kaybolması durumunda Aggregator süresiz bekler. Bu nedenle her zaman bir timeout değeri tanımlamak gerekir. SAP CPI’da bu değer varsayılan olarak 15 dakikadır; ancak gerçek zamanlı senaryolarda 30–60 saniye yeterli olabilir. Timeout dolduğunda sistem mevcut mesajları bir hata işleyicisine yönlendirir ya da kısmi sonuç olarak işaretler.

SAP Integration Suite ile Splitter/Aggregator’ı Kullanmaya Başlamak için 5 Adım

  1. iFlow’u Tasarlayın: SAP Integration Suite’in web editörüne girin ve yeni bir Integration Flow oluşturun. Splitter ve Aggregator bileşenlerini palet üzerinden sürükleyin.
  2. Splitter’ı Yapılandırın: Expression Type olarak XPath veya Token Expression seçin. Büyük dosyalar için Iterating Splitter’ı tercih edin.
  3. Ara İşleme Adımlarını Ekleyin: Her alt mesaj için gereken dönüşüm (XSLT, Groovy, Message Mapping) ve yönlendirme adımlarını tanımlayın.
  4. Aggregator’ı Tanımlayın: Correlation Expression’ı, Completion Condition’ı ve timeout değerini belirleyin. Aggregation Algorithm olarak önce combineInSequence’i deneyin.
  5. Test ve İzleme: SAP Integration Suite’in Message Monitoring ekranında her mesajın durumunu takip edin. Splitter sonrasında mesajların bağımsız loglarla görüneceğini not edin.

MDP Group olarak yürüttüğümüz entegrasyon projelerinde, yüksek hacimli akışlarda Iterating Splitter ile tanımlı bir Aggregator timeout’unun birlikte kullanılmasının üretim ortamındaki kararlılığı belirgin biçimde artırdığını gözlemliyoruz. Bu pattern’lar yalnızca veri hacminin gerçekten yüksek olduğu (örneğin binlerce satırlık mesajlar) senaryolarda anlamlı kazanım sağlar; küçük ve sabit boyutlu mesajlarda ek karmaşıklık getirebilir.

Sıkça Sorulan Sorular (SSS)

Splitter ve Aggregator her zaman birlikte mi kullanılır?

Hayır. Splitter tek başına, mesajları bölüp bağımsız işlemek için yeterlidir. Aggregator ise yalnızca bölünmüş parçaları veya farklı kaynaklardan gelen yanıtları yeniden birleştirmek gerektiğinde devreye girer. İki pattern birlikte Scatter-Gather mimarisini oluşturur.

General Splitter ile Iterating Splitter arasındaki fark nedir?

General Splitter tüm mesajı belleğe alarak böler ve daha hızlıdır; Iterating Splitter ise kayıtları stream olarak okur ve bellek tüketimi düşüktür. 10.000 satırı aşan büyük dosyalarda OutOfMemory hatalarını önlemek için Iterating Splitter tercih edilir.

Aggregator timeout değeri neden zorunludur?

Tamamlanma koşulu yalnızca mesaj sayısına bağlıysa, beklenen bir mesaj kaybolduğunda Aggregator süresiz bekler ve akış kilitlenir. Tanımlı bir timeout, süre dolduğunda mevcut mesajların hata işleyicisine yönlendirilmesini sağlayarak bu riski ortadan kaldırır.

Sonuç: Doğru Pattern, Ölçeklenebilir Entegrasyonun Temelidir

SAP Integration Suite’de büyük mesajları Splitter ve Aggregator pattern’larıyla işlemek; sistem güvenilirliğini artırır, hata yönetimini sadeleştirir ve yüksek veri hacimlerinde performansı korur. Bu pattern’lar, mikro hizmet mimarisiyle çalışan projelerde de aynı prensipler dahilinde uygulanabilir.

SAP entegrasyon projelerinizde bu pattern’ları hayata geçirmek, mimari kararları değerlendirmek veya mevcut entegrasyon akışlarınızı optimize etmek istiyorsanız SAP deneyimli danışmanlık ekibimizle iletişime geçebilirsiniz: info@mdpgroup.com

Referanslar


Benzer
Bloglar

Mailiniz başarıyla gönderilmiştir en kısa sürede sizinle iletişime geçilecektir.

Mesajınız ulaştırılamadı! Lütfen daha sonra tekrar deneyin.