Skip to main content

RabbitMQ - AWS Eventbridge Entegrasyonu

CloudAMQP üzerinde kullandığımız RabbitMQ mesaj yazılımı ile AWS Eventbridge servisine event gönderebilmekteyiz. Bunun için canlı ortamda kullandığımız RabbitMQ servisini AWS Eventbridge servisiyle bir kuyruk üzerinden konuşacak şekilde bir yapı kurgulanmıştır. CloudAMQP'nin AWS ile yaptığı entegrasyon neticesinde, AWS_EVENTBRIDGE kuyruğuna bir consumer eklenerek kuyruğa atılan mesajlar AWS Eventbridge servisine iletilmektedir. Eventbridge servisi de yazacağımız kurallar neticesinde eventi bir AWS servisine veya bir Lambda fonksiyonuna iletebilmektedir.

Böylelikle hem AWS servisleri üzerinde işlemler yapabilir (Örnek olarak bir EC2 makinesinin ayağa kaldırılması veya indirilmesi gibi) hem de Lambda gibi platformlara event göndererek olay bazlı serverless iş akışları kurgulayabiliriz.

v2 uygulamasına bağlı bu RabbitMQ kuyruğu (AWS_EVENTBRIDGE) ile AWS'te işlemler yapılabilmesi sağlanmaktadır.

Örnek vermek gerekirse, v2'de oluşturulan bir eventi AWS Lambda'da işleyebiliriz. Misalen v2'de ürettiğimiz bir mail atma işlemi için Lambda fonksiyonu yazarak mail atma işlemini Lambda ile çözebiliriz ve mevcut uygulamamızın olası mail trafiğindeki sorunlardan korunmasını sağlayabiliriz.

Örnek bir Lambda eventi aşağıdaki gibi olabilir:

{
"version":"0",
"id":"368d31c8-e58d-5ffe-61f3-e204ff09c152",
"detail-type":"AWS_EVENTBRIDGE",
"source":"aws.partner/cloudamqp.com/funny-gold-flamingo/llgssujo/AWS_EVENTBRIDGE",
"account":"434597997761",
"time":"2023-06-23T10:10:01Z",
"region":"eu-central-1",
"resources":[],
"detail":{
"headers":{},
"body":{
"jobName":"daily-depot-income-report",
"id":124,
"name":"Acıbadem Mila",
"mail":"bisudepoacibadem@gmail.com"
}
}
}

v2 uygulamasından yalnızca detail objesi içindeki body objesi gönderilmiştir, Eventbridge servisi RabbitMQ'dan gelen mesajı AWS Lambda servisinin event bodysine dönüştürerek ilgili kurala göre AWS Lambda fonksiyonunu trigger etmektedir.

Akış şu şekildedir:

Uygulama -> RabbitMQ -> Eventbridge -> Eventbridge Rules -> Rule'un işaret ettiği AWS Servisi

İlgili kuyruğu (AWS_EVENTBRIDGE) yalnızca CloudAMQP'e ait consumer dinlemektedir, bu kuyruğa başka bir consumer bağlamayınız. RabbitMQ Management Dashboard'unda bu client'ın bilgileri şöyledir:

connection_name: cloudamqp-eventbridge
platform: Crystal
product: amqp-client.cr
Dikkat

Bu client'ın bağlantısını koparmayınız.