Amazon SQS Hakkında SSS

Genel Bakış

Amazon SQS, ileti kuyruklarını yönetmek için kendi yazılımınızı derlemeye veya geliştirme ve yapılandırma için önemli hazırlık süresi gerektiren ücretli ya da açık kaynaklı ileti kuyruğa alma sistemlerini kullanmaya göre çok sayıda avantaj sağlar. 

Bu alternatifler, sürekli donanım bakımı ve sistem yönetim kaynakları gerektirir. Bu sistemleri yapılandırma ve yönetmenin karmaşıklığı, donanımın arıza yapması durumunda iletilerin kaybedilmemesini sağlayan yedek ileti deposu gereksinimi ile birleşir.

Buna karşılık, Amazon SQS idari bir yük gerektirmez ve çok az yapılandırma içerir. Amazon SQS, çok büyük ölçekte çalışır ve bir günde milyarlarca mesajı işler. Herhangi bir yapılandırma olmadan Amazon SQS’ye gönderdiğiniz trafik miktarının ölçeğini artırıp azaltabilirsiniz. Amazon SQS ayrıca son derece yüksek ileti dayanıklılığı sağlayarak size ve paydaşlarınıza daha fazla güven verir.

Amazon SNS, uygulamaların zamana bağlı iletileri bir “anında iletme” mekanizması yoluyla birden fazla aboneye göndermesine olanak tanır ve güncellemeleri düzenli aralıklarla denetleme veya “yoklama” gereksinimini ortadan kaldırır. Amazon SQS, iletileri bir yoklama modeli aracılığıyla alıp vermek üzere dağıtılmış uygulamalar tarafından kullanılan bir ileti kuyruğa alma hizmetidir. Gönderme ve alma bileşenlerini ayrıştırmak için kullanılabilir. 

Mevcut uygulamalarla mesajlaşma kullanıyorsanız ve mesajlarınızı hızlı ve kolay bir şekilde buluta taşımak istiyorsanız Amazon MQ kullanmanız önerilir. Sektör standardı API’leri ve protokolleri destekler, bu nedenle uygulamalarınızda mesajlaşma kodunu yeniden yazmadan standartlara dayalı herhangi bir ileti aracısından Amazon MQ ürününe geçiş yapabilirsiniz. Bulutta yepyeni uygulamalar oluşturuyorsanız, Amazon SQS ve Amazon SNS kullanmayı düşünmeniz önerilir. Amazon SQS ve SNS, neredeyse sonsuz düzeyde ölçeklenebilen ve basit, kullanımı kolay API’ler sağlayan basit ve tam olarak yönetilen ileti kuyruğu ve konu başlığı hizmetleridir. 

Evet. FIFO (ilk giren ilk çıkar) kuyrukları, iletilerin gönderilip alındığı tam sırayı korur. Bir FIFO kuyruğu kullanıyorsanız, iletilerinize sıralama bilgilerini eklemeniz gerekmez. Daha fazla bilgi için Amazon SQS Geliştirici Kılavuzu'ndaki FIFO Kuyruk Mantığı bölümüne bakın.

Standart kuyruklar, iletilerin sırasını korumayı deneyen bir gevşek FIFO özelliği sağlar. Ancak, standart kuyrukların yüksek oranda dağıtılmış bir mimari kullanılarak büyük oranda ölçeklenebilir olması tasarlandığı için, iletilerin tam olarak gönderildikleri sırayla alınması garanti edilmez.

Standart kuyruklar en az bir kez teslim sağlar, yani her ileti en az bir kez teslim edilir.

FIFO kuyrukları tam bir kez işleme sağlar, yani her mesaj bir kez teslim edilir ve bir tüketici tarafından işlenmesine ve silinmesine kadar kullanılabilir olur. Yinelenen iletiler kuyruğa eklenmez.

Amazon SQS uygulamalar veya mikro hizmetler arasında aktarılmakta olan iletilerin depolanması için güvenilir, yüksek oranda ölçeklenebilir, barındırılan bir kuyruk sunar. Dağıtılmış uygulama bileşenleri arasında verileri taşır ve bu bileşenleri ayrıştırmanıza yardımcı olur. Amazon SQS, teslim edilemeyen iletiler kuyruğu ve zehirli ileti yönetimi gibi genel ara yazılım yapıları sağlar. Ayrıca genel bir web hizmetleri API’si sağlar ve AWS SDK’sının desteklediği herhangi bir programlama dili tarafından erişilebilir. Amazon SQS hem standart hem de FIFO kuyruklarını destekler.

Amazon Kinesis Streams, akış büyük verilerinin gerçek zamanlı işlenmesine olanak tanır ve birden fazla Amazon Kinesis Uygulamalarına kayıtları okuma ve yeniden oynatma imkanı sağlar. Amazon Kinesis Client Library (KCL) belirli bir bölüm anahtarının tüm kayıtlarını aynı kayıt işlemcisine teslim eder, aynı Amazon Kinesis akışından okunan birden fazla uygulama derlemeyi kolaylaştırır (örneğin, sayma, toplama ve filtreleme).

Daha fazla bilgi için Amazon Kinesis Belgeleri’ne bakın.

Evet. Amazon'daki geliştiriciler, Amazon SQS'yi her gün çok sayıda iletiyi işleyen çeşitli uygulamalar için kullanmaktadır. Hem Amazon.com hem de AWS'deki temel iş süreçleri Amazon SQS'yi kullanmaktadır.

Faturalandırma

Yalnızca kullandığınız kadar ödersiniz ve minimum ücret yoktur.

Amazon SQS'nin maliyeti talep başına hesaplanır ve Amazon SQS'nin dışına aktarılan veriler için veri aktarım ücretlerini içerir [veriler aynı bölge içindeki Amazon Elastic Compute Cloud (EC2) bulut sunucularına veya AWS Lambda işlevlerine aktarılmadığı sürece]. Kuyruk türüne ve bölgeye göre ayrıntılı fiyatlandırma dökümleri için Amazon SQS Fiyatlandırması bölümüne bakın.

Amazon SQS Ücretsiz Kullanım, her ay ücretsiz olarak 1 milyon istek sunar.

Çok sayıda küçük ölçekli uygulama, tamamen Ücretsiz Kullanım sınırları dâhilinde çalışabilmektedir. Ancak yine de veri aktarım ücretleri geçerli olabilir. Daha fazla bilgi için Amazon SQS Fiyatlandırması bölümüne bakın.

Ücretsiz Kullanım, aylık bir tekliftir. Ücretsiz kullanım sonraki aya devredilmez.

Evet, ücretsiz kullanımın dışında kalan tüm talepler için. Tüm Amazon SQS talepleri ücretlendirilir ve aynı fiyattan faturalandırılır.

Hayır. Toplu işlemlerin tamamı (SendMessageBatch, DeleteMessageBatch ve ChangeMessageVisibilityBatch) diğer Amazon SQS talepleri ile aynı maliyete sahiptir. İletileri toplu işler halinde gruplandırarak Amazon SQS maliyetlerinizi azaltabilirsiniz.

Amazon SQS kullanmaya başlamak için başlangıç ücreti yoktur. Ay sonunda kredi kartınıza ilgili aya ait kullanımın ücreti otomatik olarak yansıtılır.

Geçerli faturalandırma dönemine ait ücretleri dilediğiniz zaman AWS web sitesinden görüntüleyebilirsiniz:

  1. AWS hesabınızda oturum açın.
  2. Web Services Hesabınız altında Hesap Etkinliği'ni seçin.

Maliyet tahsis etiketlerini kullanarak kaynak ve maliyet yönetimi kuyruklarınızı etiketleyip takip edebilirsiniz. Etiket, anahtar-değer çiftinden oluşan bir meta veri etiketidir. Örneğin, kuyruklarınızı maliyet merkezine göre etiketleyebilir ve sonra bu maliyet merkezlerine göre maliyetlerinizi kategorilere ayırıp takip edebilirsiniz.

Daha fazla bilgi için Amazon SQS Yazılım Geliştirme Kılavuzu’ndaki Amazon SQS Kuyruklarınızı Etiketleme bölümüne bakın. AWS kaynaklarının maliyet tahsisi etiketlemesi hakkında daha fazla bilgi için AWS Faturalama ve Maliyet Yönetimi Kullanıcı Kılavuzu’ndaki Maliyet Tahsisi Etiketleri bölümüne bakın.

Aksi belirtilmedikçe fiyatlarımız KDV veya ilgili satış vergisi gibi vergi ve harçları içermez.

Fatura adresi Japonya'da olan müşteriler için herhangi bir bölgede AWS kullanımı Japonya Tüketim Vergisine tabidir. Daha fazla bilgi için Amazon Web Services Tüketim Vergisi ile İlgili SSS bölümüne bakın.

Özellikler, işlevler ve arabirimler

Evet. Amazon SQS'yi Amazon EC2, Amazon Elastic Container Service (ECS) ve AWS Lambda gibi işlem hizmetlerinin yanı sıra Amazon Simple Storage Service (Amazon S3) ve Amazon DynamoDB gibi depolama ve veritabanı hizmetleriyle birlikte kullanarak uygulamalarınızı daha esnek ve ölçeklenebilir hale getirebilirsiniz.

Amazon SQS kuyrukları oluşturmanıza ve mesajları kolayca göndermenize yardımcı olan AWS Yönetim Konsolu'nu kullanarak Amazon SQS'ye erişebilirsiniz.

Amazon SQS ayrıca bir web hizmetleri API’si sağlar. Ayrıca AWS SDK'leri ile entegredir ve tercih ettiğiniz programlama dilinde çalışmanıza olanak tanır.

Mesaj kuyruğu işlemleri hakkında bilgi için Amazon SQS API Referansı bölümüne bakın.

Amazon SQS ileti kuyruğunda yalnızca bir AWS hesap sahibi (ya da hesap sahibinin haklarını devrettiği bir AWS hesabı) işlem gerçekleştirebilir.

Tüm iletiler, ileti bir ileti kuyruğuna teslim edildiğinde Amazon SQS’nin döndürdüğü genel bir benzersiz kimliğe sahiptir. İleti üzerinde başka bir eylem yapmak için kimlik gerekli değildir, ancak ileti kuyruğundaki belirli bir iletinin alınmasını takip etmek için yararlıdır.

İleti kuyruğundan bir ileti aldığınızda, yanıt iletiyi silerken sağlamanız gereken bir alındı belirteci içerir.

Daha fazla bilgi için Amazon SQS Geliştirici Kılavuzu'ndaki Kuyruk ve Mesaj Tanımlayıcıları bölümüne bakın.

Amazon SQS'de, diğer kaynak kuyruklarından ileti alan, teslim edilemeyen ileti kuyruklarını yapılandırmak için API'yi veya konsolu kullanabilirsiniz. Teslim edilemeyen ileti kuyruğunu yapılandırırken, teslim edilemeyen ileti kuyruğunun yeniden etkinleştirmesi için uygun izinleri RedriveAllowPolicy'yi kullanarak ayarlamanız gerekir.

RedriveAllowPolicy, teslim edilemeyen ileti kuyruğu yeniden etkinleştirmesi için gerekli olan parametreleri içermektedir. Hangi kaynak kuyruklarının, teslim edilemeyen ileti kuyruklarını JSON nesnesi olarak belirleyebileceğini tanımlar.

Teslim edilemeyen ileti kuyruğu oluşturduğunuzda, tamamlanamayan işleme denemeleri üst sınıra ulaştıktan sonra iletiler alınır. Teslim edilemeyen ileti kuyruklarını, işlenemeyen iletileri daha sonra analiz etmek üzere yalıtmak için kullanabilirsiniz.

Daha fazla bilgi için Amazon SQS Geliştirici Kılavuzu'ndaki Amazon SQS Teslim Edilemeyen İletiler Sıralarını Kullanma bölümüne bakın.

Görünürlük zaman aşımı, Amazon SQS’nin diğer tüketici bileşenlerin bir iletiyi almasını ve işlemesini engellediği süredir. Daha fazla bilgi için Amazon SQS Geliştirici Kılavuzu'ndaki Görünürlük Zaman Aşımı bölümüne bakın.

Evet. Bir Amazon SQS iletisi en fazla 10 meta veri özniteliği içerebilir. Bir iletinin gövdesini, onu tanımlayan meta verilerden ayırmak için ileti özniteliklerini kullanabilirsiniz. Uygulamalarınızın bir iletiyi nasıl işleyeceğini anlamadan önce tüm iletiyi incelemesi gerekmediği için, bu öznitelikler bilgilerin daha hızlı ve verimli bir şekilde işlenip depolanmasına yardımcı olur.

Amazon SQS ileti öznitelikleri, ad-tür-değer üçlüleri biçimini alır. Desteklenen türler dize, ikili ve sayıdır (tamsayı, kayan nokta ve çift dahil). Daha fazla bilgi için Amazon SQS Geliştirici Kılavuzu'ndaki Amazon SQS Mesaj Özniteliklerini Kullanma bölümüne bakın.

Kuyruktaki süre değerini belirlemek için, bir iletiyi alırken SentTimestamp özniteliğini isteyebilirsiniz. Geçerli saatten bu değerin çıkarılması, kuyruktaki süre değerini verir.

SendMessage, ReceiveMessage ve DeleteMessage API istekleri için tipik gecikme süreleri onlarca veya birkaç yüz milisaniyedir.

Amazon SQS, AWS hesap kimliği mevcut olmadığında (örneğin, anonim bir kullanıcı ileti gönderdiğinde) IP adresini sağlar.

Amazon SQS uzun yoklaması, Amazon SQS kuyruklarınızdan iletileri almanın bir yoludur. Normal kısa yoklama hemen döndürülürken, yoklanan ileti kuyruğu boş olsa bile uzun yoklama ileti kuyruğuna bir ileti ulaşana veya uzun yoklama zaman aşımına uğrayana kadar yanıt döndürmez.

Uzun yoklama, iletileri geldikleri anda Amazon SQS kuyruğunuzdan almayı hesaplı hale getirir. Boş alım sayısını azaltabileceğiniz için uzun yoklamanın kullanılması SQS maliyetini düşürebilir. Daha fazla bilgi için Amazon SQS Geliştirici Kılavuzu'ndaki Amazon SQS Uzun Yoklaması bölümüne bakın.

Hayır. Uzun yoklamalı ReceiveMessage çağrıları, kısa yoklamalı ReceiveMessage çağrıları ile tam olarak aynı ücretten faturalandırılır.

Neredeyse tüm durumlarda Amazon SQS uzun yoklaması, kısa yoklamadan daha fazla tercih edilir. Uzun yoklama istekleri kuyruk tüketicilerinizin iletileri kuyruğunuza ulaştıkları anda almasını sağlarken, döndürülen boş ReceiveMessageResponse örneklerinin sayısını azaltır.

Amazon SQS uzun yoklaması, kullanım örneklerinin büyük bölümünde daha az maliyetle daha yüksek performans sağlar. Ancak, uygulamanız bir ReceiveMessage çağrısından anında yanıt bekliyorsa, uygulamanızda bazı değişiklikler yapmadan uzun yoklamadan yararlanamayabilirsiniz.

Örneğin, uygulamanız birden fazla kuyruğu sorgulamak için tek bir ileti dizisi kullanıyorsa, tek ileti dizisi boş kuyruklarda uzun yoklama zaman aşımını bekleyeceği için kısa yoklamadan uzun yoklamaya geçiş yapmak büyük olasılıkla işe yaramaz ve ileti içerebilecek kuyrukların işlenmesini geciktirir.

Böyle bir uygulamada, sadece bir kuyruğu işlemek için, uygulamanın Amazon SQS uzun yoklamasının sağladığı avantajlardan yararlanmasına olanak tanıyan tek bir ileti dizisinin kullanılması iyi bir uygulamadır.

Genellikle, uzun yoklama zaman aşımı için en fazla 20 saniye kullanmanız gerekir. Yüksek uzun yoklama zaman aşımı değerleri, döndürülen boş ReceiveMessageResponse örneklerinin sayısını azalttığından, uzun yoklama zaman aşımınızı mümkün olduğunca yüksek bir değere ayarlamayı deneyin.

20 saniyelik maksimum değer uygulamanızda işe yaramazsa (önceki soruda verilen örneğe bakın), 1 saniye kadar kısa bir uzun yoklama zaman aşımı ayarlayın.

Tüm AWS SDK’ları varsayılan olarak 20 saniyelik uzun yoklamalarla çalışır. Amazon SQS’ye erişmek için AWS SDK kullanmıyorsanız veya AWS SDK’yı özellikle daha kısa bir zaman aşımına sahip olacak şekilde yapılandırdıysanız, Amazon SQS istemcinizi daha uzun isteklere izin verecek veya daha kısa bir uzun yoklama zaman aşımı kullanacak şekilde değiştirmeniz gerekebilir.

Java için AmazonSQSBufferedAsyncClient, AmazonSQSAsyncClient arabiriminin bir uygulamasını sağlar ve birkaç önemli özellik ekler:

  • Uygulamada gerekli değişiklikler yapılmadan birden fazla SendMessage, DeleteMessage veya ChangeMessageVisibility isteklerinin otomatik toplu iş haline getirilmesi
  • İletilerin alınmasını beklemeden uygulamanızın Amazon SQS’den iletileri anında işlemesine olanak tanıyan bir yerel ara belleğe önceden getirilmesi

Birlikte çalıştığında, otomatik toplu iş oluşturma ve önceden getirme işlemleri aktarım hızını artırır ve uygulamanızın gecikme süresini azaltırken daha az Amazon SQS isteğinde bulunarak maliyetlerinizi düşürür. Daha fazla bilgi için Amazon SQS Geliştirici Kılavuzu'ndaki İstemci Tarafı Ara Belleğe Alma ve Talep Toplu İşi Oluşturma bölümüne bakın.

AmazonSQSBufferedAsyncClient istemcisini Java İçin AWS SDK'nin bir parçası olarak indirebilirsiniz.

Hayır. Java için AmazonSQSBufferedAsyncClient, mevcut AmazonSQSAsyncClient yerine yedek olarak uygulanır.

Uygulamanızı en son AWS SDK’yı kullanacak şekilde güncelleyip istemcinizi AmazonSQSAsyncClient yerine Java için AmazonSQSBufferedAsyncClient kullanacak şekilde değiştirirseniz, uygulamanız otomatik toplu iş oluşturma ve önceden getirme avantajlarından da yararlanır.

  1. Amazon SQS konsolunda bir Amazon SQS standart kuyruğu seçin.
  2. Kuyruk Eylemleri altında açılır listeden SNS Konusu Kuyruğuna Abone Ol’u seçin.
  3. İletişim kutusunda Bir Konu Seçin açılır listesinden konuyu seçin ve Abone Ol’a tıklayın.

Daha fazla bilgi için Amazon SQS Geliştirici Kılavuzu'ndaki Amazon SNS Konusu Kuyruğuna Abone Olma bölümüne bakın.

Evet. PurgeQueue eylemini kullanarak bir Amazon SQS ileti kuyruğundaki tüm iletileri silebilirsiniz.

Bir ileti kuyruğunu temizlediğinizde, daha önce ileti kuyruğuna gönderilmiş tüm iletiler silinir. İleti kuyruğunuz ve öznitelikleri silinmezse ileti kuyruğunu yeniden yapılandırmanız gerekmez; ileti kuyruğunu kullanmaya devam edebilirsiniz.

Yalnızca belirli iletileri silmek için DeleteMessage ve DeleteMessageBatch eylemlerini kullanın.

Daha fazla bilgi için şu öğreticiye bakın: Bir Amazon SQS Kuyruğundaki İletileri Silme.

FIFO kuyrukları

FIFO kuyrukları, Amazon SQS'nin erişilebildiği tüm AWS bölgelerinde kullanılabilir. Amazon SQS bölge erişilebilirliğiyle ilgili ayrıntılı bilgi için buraya göz atın.

FIFO kuyrukları, yinelenen iletilere hiçbir zaman izin vermeyecek şekilde tasarlanmıştır. Bununla birlikte, ileti üreticiniz belirli senaryolarda yinelenen iletiler sunabilir. Örneğin, üreticiniz bir ileti gönderip yanıt alamazsa aynı iletiyi yeniden gönderebilir. Amazon SQS API’leri, ileti üreticinizin yinelenen ileti göndermesini engelleyen yinelenenleri kaldırma özelliğini sağlar. İleti üreticisinin gönderdiği tüm yinelenen iletiler, 5 dakikalık bir yinelenenleri kaldırma aralığı içinde kaldırılır.

Standart kuyruklar için ara sıra bir iletinin yinelenen bir kopyasını alabilirsiniz (en az bir kez teslim). Standart bir kuyruk kullanıyorsanız, uygulamalarınızı bir kez etkili olacak (yani, aynı iletiyi birden çok kez işlerken bundan olumsuz etkilenmeyecek) şekilde tasarlamalısınız.

Daha fazla bilgi için Amazon SQS Geliştirici Kılavuzu'ndaki Tam Olarak Bir Kere İşleme bölümüne bakın.

Hayır. Amazon SQS standart kuyrukları (mevcut kuyrukların yeni adı) olduğu gibi kalacak ve standart kuyruk oluşturmaya devam edebileceksiniz. En yüksek ölçeklenebilirlik ve performans hala bu kuyruklar tarafından sağlanıyor olsa da sipariş güvenceleri sunulmaz ve yineleme gerçekleşebilir.

Standart kuyruklar, birden çok tek seferlik tüketici ile iş dağıtımı gibi birçok senaryo için uygundur.

Hayır. Kuyruk tipini, kuyruğu oluştururken seçmeniz gerekir. Bununla birlikte, bir FIFO kuyruğuna geçmek mümkündür. Daha fazla bilgi için Amazon SQS Geliştirici Kılavuzu'ndaki Standart Kuyruktan FIFO Kuyruğuna Geçme bölümüne bakın.

FIFO kuyruğu işlevlerinden yararlanabilmeniz için en son AWS SDK sürümünü kullanmanız gerekir.

FIFO kuyrukları standart kuyruklarla aynı API eylemlerini kullanır ve ileti alıp vermenin yanı sıra iletileri silme ve görünürlük zaman aşımını değiştirme işlemlerinin mekanik yapısı aynıdır. Ne var ki ileti gönderirken bir ileti grubu kimliği belirtmeniz gerekir. Daha fazla bilgi için Amazon SQS Geliştirici Kılavuzu'ndaki FIFO Kuyruk Mantığı bölümüne bakın.

FIFO kuyrukları standart kuyrukların desteklediği tüm ölçümleri destekler. FIFO kuyrukları için tüm yaklaşık ölçümler doğru sayım değerleri döndürür. Örneğin, aşağıdaki AWS CloudWatch ölçümleri desteklenmektedir:

  • ApproximateNumberOfMessagesDelayed – Kuyruktaki geciken ve hemen okunmak üzere erişilemeyen iletilerin sayısı.
  • ApproximateNumberOfMessagesVisible – Kuyruktan alınmaya uygun olan iletilerin sayısı.
  • ApproximateNumberOfMessagesNotVisible – Aktarılmakta olan iletilerin sayısı (bir istemciye gönderilmiş ancak henüz silinmemiş ya da henüz görünürlük aralığının sonuna ulaşmamış iletiler).

İletiler bir FIFO kuyruğu içinde birbirinden ayrı, sıralanmış "paketler" halinde gruplandırılır. Her ileti grubu kimliği için tüm iletiler katı bir sıralamayla gönderilip alınır. Bununla birlikte, farklı ileti grubu kimlik değerlerine sahip iletiler sıralamaya uyulmadan gönderilip alınabilir. İletiyi bir ileti grubu kimliğiyle ilişkilendirmeniz gerekir. İleti grubu kimliği sağlamazsanız eylem başarısız olur.

Bir FIFO kuyruğuna birden çok konak (veya aynı konaktaki farklı iş parçacıkları) tarafından aynı ileti grubu kimliğine sahip iletiler gönderilirse Amazon SQS iletileri işlenmek üzere alındıkları sırada teslim eder. İletilerin gönderilip alındığı sıralamanın Amazon SQS tarafından korunmasını sağlamak için birden çok gönderenin her iletiyi benzersiz bir ileti grubu kimliğiyle gönderdiğinden emin olun.

Daha fazla bilgi için Amazon SQS Geliştirici Kılavuzu'ndaki FIFO Kuyruk Mantığı bölümüne bakın.

Evet. Bir FIFO kuyruğuna bir veya daha fazla üretici tarafından ileti gönderilebilir. İletiler Amazon SQS tarafından başarıyla alındıkları sıralamaya göre depolanır.

Birden çok üretici SendMessage veya SendMessageBatch eylemlerinden başarılı yanıtını beklemeksizin paralel olarak ileti gönderirse üreticiler arasındaki sıralama korunmayabilir. Birden çok paralel üretici kodunuzun, kuyruktaki iletilerin nihai sıralamasını belirleyebilmesi için SendMessage veya SendMessageBatch eylemlerinin yanıtı, FIFO kuyruklarının iletileri kuyruğa yerleştirirken kullandığı nihai sıralamayı içerir.

Amazon SQS FIFO kuyrukları tasarım itibarıyla aynı ileti grubundan tek seferde birden çok tüketiciye ileti sunmaz. Bununla birlikte, FIFO kuyruğunuzda birden çok ileti grubu varsa Amazon SQS'nin farklı ileti gruplarından farklı tüketicilere ileti sunmasına imkan tanıyan paralel tüketiciler özelliğinden yararlanabilirsiniz.

Varsayılan olarak FIFO kuyrukları toplu işleme ile saniyede 3.000’e kadar ya da toplu işleme olmadan saniyede 300’e kadar iletiyi (saniyede 300 gönderme, alma veya silme işlemi) destekler. Daha yüksek aktarım hızına ihtiyacınız varsa Amazon SQS konsolunda FIFO için yüksek aktarım hızı modunu etkinleştirebilirsiniz; bu mod, toplu işleme olmadan saniyede 70.000'e kadar iletiyi ve toplu işleme ile daha da fazlasını destekler. Bölge başına FIFO yüksek aktarım hızı modu kotalarının ayrıntılı dökümü için lütfen AWS Belgelerine bakın.

Bir FIFO kuyruğunun adı .fifo son ekiyle bitmelidir. Son ek, 80 karakterlik kuyruk adı sınırlarının hesaplanmasına dahil edilir. Bir kuyruğun FIFO kuyruğu olup olmadığını anlamak için kuyruk adının bu son ekle bitip bitmediğini kontrol edebilirsiniz.

Güvenlik ve güvenilirlik

Amazon SQS, tüm ileti kuyruklarını ve iletileri birden çok yedekli Erişilebilirlik Alanı (AZ) içeren tek, yüksek erişilebilirlikli bir AWS bölgesinde depoladığından, tek bir bilgisayar, ağ veya AZ hatası iletileri erişilemez hale getiremez. Daha fazla bilgi için Amazon İlişkisel Veri Tabanı Hizmeti Kullanıcı Kılavuzu'ndaki Bölgeler ve Erişilebilirlik Alanları bölümüne bakın.

Kimlik doğrulama mekanizmaları Amazon SQS ileti kuyruklarında depolanan iletilerin yetkisiz erişime karşı korunmasını sağlar. Bir ileti kuyruğuna kimlerin ileti gönderebileceğini ve bir ileti kuyruğundan kimlerin ileti alabileceğini kontrol edebilirsiniz. Ek güvenlik için iletileri bir ileti kuyruğuna yerleştirilmeden şifrelemeye yönelik kendi uygulamanızı oluşturabilirsiniz.

Amazon SQS'nin AWS Kimlik ve Erişim Yönetimi (IAM) politikaları ile aynı dilde yazılmış politikalar kullanan kendi kaynak tabanlı izin sistemi vardır. Örneğin, tıpkı IAM politikalarında olduğu gibi değişkenleri kullanabilirsiniz. Daha fazla bilgi için Amazon SQS Geliştirici Kılavuzu'ndaki Amazon SQS Politika Örnekleri bölümüne bakın.

Amazon SQS, SSL üzerinden HTTP (HTTPS) ve Aktarım Katmanı Güvenliği (TLS) protokollerini destekler. Çoğu istemci, herhangi bir kod veya yapılandırma değişikliği olmadan TLS’nin daha yeni sürümlerini kullanmak için otomatik olarak pazarlık gerçekleştirebilir. Amazon SQS, tüm bölgelerde Aktarım Katmanı Güvenliği (TLS) protokolünün 1.0, 1.1 ve 1.2 sürümlerini destekler.

Amazon SQS size bir ileti döndürdüğünde, ileti sizin iletiyi gerçekten alıp almadığınızdan bağımsız olarak ileti kuyruğunda kalır. İletinin silinmesi sizin sorumluluğunuzdadır ve silme isteği, iletiyi işlemeyi tamamladığınızı onaylar.

İletiyi silmezseniz Amazon SQS başka bir alım isteği aldığında bunu yeniden teslim eder. Daha fazla bilgi için Amazon SQS Geliştirici Kılavuzu'ndaki Görünürlük Zaman Aşımı bölümüne bakın.

Hayır. FIFO kuyrukları, yinelenen iletilere hiçbir zaman izin vermez.

Standart kuyruklarda, nadiren olsa da daha önce silinen bir iletiyi ikinci bir kez alabilirsiniz. 

Daha önce silinen bir mesaj için DeleteMessage isteği gönderdiğinizde Amazon SQS tarafından bir başarılı yanıtı döndürülür.

Sunucu tarafı şifrelemesi (SSE)

SSE, hassas verileri şifrelenmiş kuyruklarda aktarmanıza imkan tanır. SSE, AWS Anahtar Yönetimi Hizmeti (AWS KMS) içinde yönetilen anahtarları kullanarak Amazon SQS kuyruklarındaki mesajların içeriğini korur. SSE, iletileri Amazon SQS alır almaz şifreler. İletiler şifrelenmiş biçimde depolanır ve Amazon SQS bunların şifrelemesini yalnızca iletiler yetkili bir tüketiciye gönderilirken çözer.

Daha fazla bilgi için Amazon SQS Geliştirici Kılavuzu'nun Sunucu Tarafı Şifrelemesi (SSE) ve AWS KMS Kullanarak Verileri Koruma bölümüne bakın.

Evet. Bunu yapmak için AWS hizmetleri (ör. Amazon CloudWatch Events, Amazon S3 ve Amazon SNS) ile SSE’li Kuyruklar arasında uyumluluğu etkinleştirmeniz gerekir. Ayrıntılı yönergeler için SQS Geliştirici Kılavuzu'ndaki Uyumluluk bölümüne bakın.  

Amazon SQS için sunucu tarafı şifrelemesine (SSE), Amazon SQS'in mevcut olduğu tüm AWS bölgelerinde erişilebilir. Amazon SQS bölge erişilebilirliğiyle ilgili ayrıntılı bilgi için buraya göz atın.

Amazon SQS API'sini kullanarak yeni veya mevcut bir kuyruk için SSE'yi etkinleştirmek istiyorsanız CreateQueue veya SetQueueAttributes eyleminin KmsMasterKeyId özniteliğini ayarlayarak müşteri ana anahtarı (CMK) kimliğini (AWS tarafından yönetilen bir CMK'nin ya da özel bir CMK'nin diğer adı, diğer ad ARN'si, anahtar kimliği veya anahtar ARN'si) belirtin.

Ayrıntılı yönergeler için Amazon SQS Geliştirici Kılavuzu'ndaki Sunucu Tarafı Şifrelemesi ile Amazon SQS Kuyruğu Oluşturma ve Mevcut Bir Amazon SQS Kuyruğu İçin Sunucu Tarafı Şifrelemesi (SSE) Yapılandırma bölümlerine bakın.

Hem standart kuyruklar hem de FIFO kuyrukları SSE’yi destekler.

SSE’yi kullanabilmeniz için önce AWS KMS anahtar politikalarını kuyrukların şifrelenmesine ve iletilerin şifrelenip şifrelerinin çözülmesine imkan tanıyacak şekilde yapılandırmanız gerekir.

Bir kuyrukta SSE’yi etkinleştirmek istiyorsanız Amazon SQS için AWS tarafından yönetilen müşteri ana anahtarını (CMK) veya özel bir CMK’yı kullanabilirsiniz. Daha fazla bilgi için AWS KMS Geliştirici Kılavuzu'ndaki Müşteri Ana Anahtarları bölümüne bakın.

Bir üreticinin şifrelenmiş bir kuyruğa ileti gönderebilmesi için CMK’ya yönelik kms:GenerateDataKey ve kms:Decrypt izinlerine sahip olması gerekir.

Bir tüketicinin şifrelenmiş bir kuyruktan ileti alabilmesi için belirtilen kuyrukta varsa iletilerin şifrelenmesi amacıyla kullanılan CMK’ya yönelik kms:Decrypt iznine sahip olması gerekir. Sıra bir teslim edilemeyen iletiler sırası olarak çalışıyorsa tüketicinin varsa kaynak kuyrukta mesajların şifrelenmesi amacıyla kullanılan CMK'ye yönelik de kms:Decrypt iznine sahip olması gerekir.

Daha fazla bilgi için Amazon SQS Geliştirici Kılavuzu'ndaki SSE'yi Kullanmak İçin Hangi İzinlere Sahip Olmam Gerekir? bölümüne bakın.

Ek Amazon SQS ücreti uygulanmaz. Ancak Amazon SQS’den AWS KMS’ye yapılan çağrılar ücretlidir. Daha fazla bilgi için AWS Anahtar Yönetimi Hizmeti Fiyatlandırması bölümüne bakın.

AWS KMS kullanım ücretleri, kuyruklarınız için yapılandırılan veri anahtarı yeniden kullanım dönemine bağlıdır. Daha fazla bilgi için Amazon SQS Geliştirici Kılavuzu'ndaki AWS KMS Kullanım Maliyetlerimi Nasıl Tahmin Edebilirim? bölümüne bakın.

SSE, Amazon SQS kuyruğundaki bir iletinin gövdesini şifreler.

SSE aşağıdaki bileşenleri şifrelemez:

  • Kuyruk meta verileri (kuyruk adı ve öznitelikleri)
  • İleti meta verileri (ileti kimliği, zaman damgası ve öznitelikleri)
  • Kuyruk başına ölçümler

Amazon SQS, yapılandırılabilir bir süreliğine (1 dakika ile 24 saat arasında) zarf şifreleme ve mesajların şifresinin çözülmesi hizmetlerini sağlamak amacıyla Amazon SQS için AWS tarafından yönetilen müşteri ana anahtarını (CMK) veya özel bir CMK'yi temel alarak veri anahtarları oluşturur.

Daha fazla bilgi için Amazon SQS Geliştirici Kılavuzu'ndaki Amazon SQS için SSE Neleri Şifreler? bölümüne bakın.

SSE, AES-GCM 256 algoritmasını kullanır.

SSE, Amazon SQS'nin aktarım hızını (TPS) etkilemez. Oluşturabileceğiniz SSE kuyruğu sayısını aşağıdaki faktörler sınırlar:

  • Veri anahtarı yeniden kullanım süresi (1 dakika ile 24 saat arasında).
  • Hesap başına AWS KMS kotası (varsayılan olarak 100 TPS).
  • Kuyruklara erişen IAM kullanıcılarının veya hesaplarının sayısı.
  • Büyük bir kapsam olması (kapsam ne kadar büyük olursa o kadar çok AWS KMS çağrısı gerekir).

Örneğin, aşağıdakileri göz önünde bulunduralım:

  • Veri anahtarı yeniden kullanım döneminizi 5 dakika (300 saniye) olarak ayarladınız.
  • KMS hesabınızın varsayılan olarak 100 TPS'lik bir AWS KMS TPS kotası vardır.
  • Bekleme listesi olmadan ve 1 IAM kullanıcısıyla, tüm kuyruklarda SendMessage veya ReceiveMessage eylemleri için bir Amazon SQS kuyruğu kullanıyorsunuz.

Bu durumda, SSE ile Amazon SQS kuyruklarının teorik üst sınırını şu şekilde hesaplayabilirsiniz:

300 saniye × 100 TPS / 1 IAM kullanıcısı = 30.000 kuyruk

Maliyetleri tahmin etmek ve AWS faturanızı daha iyi anlamak için Amazon SQS’nin CMK’nızı ne sıklıkta kullandığını bilmek isteyebilirsiniz.

Not: Aşağıdaki formül beklenen maliyetler konusunda iyi bir fikir verse de Amazon SQS'nin dağıtılmış yapısı nedeniyle gerçekte oluşacak maliyetler daha yüksek olabilir.

Kuyruk (R) başına API isteği sayısını hesaplamak için şu formülü kullanın:

R = B / D * (2 * P + C)

B, faturalandırma dönemidir (saniye cinsinden)

D, veri anahtarı yeniden kullanım dönemidir (saniye cinsinden)

P, Amazon SQS kuyruğuna gönderim yapan üretim sorumlusu sayısıdır.

C, Amazon SQS kuyruğundan alım yapan tüketim sorumlusu sayısıdır.

Önemli: Genel olarak üretim sorumluları, tüketim sorumlularının iki katı maliyetle çalışır. Daha fazla bilgi için Amazon SQS Geliştirici Kılavuzu'ndaki Veri Anahtarı Yeniden Kullanım Dönemi Nasıl Uygulanır? bölümüne bakın.

Üretici ve tüketici farklı IAM kullanıcılarına sahipse maliyet artar.

Daha fazla bilgi için Amazon SQS Geliştirici Kılavuzu'ndaki AWS KMS Kullanım Maliyetlerimi Nasıl Tahmin Edebilirim? bölümüne bakın

Uygunluk

Evet. Amazon SQS, PCI DSS Düzey 1 sertifikasına sahiptir. Daha fazla bilgi için PCI Uyumluluğu bölümüne bakın.

Evet. AWS, HIPAA uyumluluğu programını HIPAA İçin Uygun Hizmet olarak Amazon SQS’yi içerecek şekilde genişletmiştir. AWS ile İş Ortağı Sözleşmesi (BAA) yaptıysanız HIPAA ile uyumlu uygulamalarınızı oluşturmak, korunan sağlık bilgileri (PHI) içeren iletiler dahil olmak üzere aktarım halindeki iletileri depolamak ve ileti aktarmak için Amazon SQS’yi kullanabilirsiniz.

Zaten AWS ile BAA imzaladıysanız Amazon SQS’yi hemen kullanmaya başlayabilirsiniz. BAA’nız yoksa veya HIPAA ile uyumlu uygulamalarınız için AWS’yi kullanma konusunda başka sorularınız varsa daha fazla bilgi edinmek üzere bize başvurun.

Not: PHI verilerini Amazon SQS aracılığıyla aktarmayı tercih ediyorsanız (veya 256 KB'den büyük mesajlarınız varsa), alternatif olarak Amazon SQS Java İçin Genişletilmiş İstemci Kitaplığı'nı kullanarak Amazon SQS mesaj yüklerini Amazon S3 aracılığıyla gönderebilirsiniz (Amazon S3, Amazon S3 Aktarım Hızlandırma kullanımı dışında HIPAA İçin Uygun Hizmetlerden biridir). Daha fazla bilgi için Amazon SQS Geliştirici Kılavuzu'ndaki Amazon SQS Java İçin Genişletilmiş İstemci Kitaplığı'nı kullanma bölümüne bakın.

Sınırlar ve kısıtlamalar

Daha uzun ileti tutma dönemi, iletinin üretilmesi ile tüketilmesi arasındaki aralığın uzamasına imkan tanıyarak daha fazla esneklik sunar.

Amazon SQS ileti tutma dönemini 1 dakika ile 14 gün arası bir değer olacak şekilde ayarlayabilirsiniz. Varsayılan değer 4 gündür. İleti tutma kotasına ulaşıldığında iletileriniz otomatik olarak silinir.

İleti tutma dönemini yapılandırmak için konsolu veya Distributiveness yöntemini kullanarak MessageRetentionPeriod özniteliğini ayarlayın. Bir iletinin Amazon SQS’de kaç saniye tutulacağını belirtmek için bu özniteliği kullanın.

MessageRetentionPeriod özniteliğini kullanarak ileti tutma dönemini 60 saniye (1 dakika) ile 1.209.600 saniye (14 gün) arası bir değere ayarlayabilirsiniz. Bu mesaj özniteliğiyle çalışma hakkında daha fazla bilgi için Amazon SQS API Referansı bölümüne bakın.

Maksimum ileti boyutunu yapılandırmak için konsolu veya SetQueueAttributes yöntemini kullanarak MaximumMessageSize özniteliğini ayarlayın. Bu öznitelik, bir Amazon SQS iletisinin içerebileceği bayt sayısını belirtir. Bu özniteliği 1.024 bayt (1 KB) ile 262.144 bayt (256 KB) arası bir değere ayarlayın. Daha fazla bilgi için Amazon SQS Geliştirici Kılavuzu'ndaki Amazon SQS Mesaj Özniteliklerini Kullanma bölümüne bakın.

256 KB'den büyük mesajlar göndermek için Amazon SQS Java İçin Genişletilmiş İstemci Kitaplığı'nı kullanın. Bu kitaplık, Amazon S3’te yer alan ve boyutu 2 GB’a kadar olabilecek bir ileti yükünün başvurusunu içeren bir Amazon SQS iletisi göndermenize imkan tanır.

Amazon SQS iletileri XML, JSON ve biçimlendirilmemiş metin dahil olmak üzere 256 KB’a kadar metin verisi içerebilir. Aşağıdaki Unicode karakterleri kabul edilir:

#x9 | #xA | #xD | [#x20 – #xD7FF] | [#xE000 – #xFFFD] | [#x10000 – #x10FFFF]

Daha fazla bilgi için XML 1.0 Belirtimi'ne bakın.

Tek bir Amazon SQS ileti kuyruğu sınırsız sayıda ileti içerebilir. Bununla birlikte, aktarım halindeki iletiler için sayı kotası standart kuyruklarda 120.000, FIFO kuyruklarında 20.000'dir. İletiler, bir tüketim bileşeni tarafından kuyruktan alınmış olmasına rağmen henüz kuyruktan silinmedikleri süre boyunca aktarım halinde kabul edilir.

Dilediğiniz sayıda ileti kuyruğu oluşturabilirsiniz.

Kuyruk adları 80 karakterle sınırlıdır.

Alfasayısal karakterler, kısa çizgiler (-) ve alt çizgiler (_) kullanabilirsiniz.

Bir ileti kuyruğunun adı, ilgili AWS hesabında ve bölgesinde benzersiz olmalıdır. Bir ileti kuyruğunun adını, ileti kuyruğunu sildikten sonra yeniden kullanabilirsiniz.

Kuyruk paylaşımı

Paylaşılacak ileti kuyruğu ile bir erişim politikası bildirimini ilişkilendirebilir ve verilen izinleri belirtebilirsiniz. Amazon SQS, erişim politikası bildirimleri oluşturup bunları yönetmeye yönelik API’ler sağlar:

  • AddPermission
  • RemovePermission
  • SetQueueAttributes
  • GetQueueAttributes

Daha fazla bilgi için Amazon SQS API Referansı bölümüne bakın.

Paylaşılan ileti kuyruğu erişimi için ileti kuyruğunun sahibi ücret öder.

Amazon SQS API’si, AWS kullanıcılarını tanımlamak için AWS hesap numarasını kullanır.

Bir ileti kuyruğunu bir AWS kullanıcısıyla paylaşmak için paylaşmak istediğiniz ileti kuyruğunun tam URL’sini sağlayın. CreateQueue ve ListQueues işlemleri, yanıtlarında bu URL’yi döndürür.

Evet. Bir ileti kuyruğuna anonim kullanıcıların erişmesine imkan tanıyan bir erişim politikası yapılandırabilirsiniz.

İzinler API’si, yazılım geliştiricilere bir ileti kuyruğuna erişimi paylaşmaya yönelik bir arabirim sağlar. Ancak bu API, koşullu erişim ya da daha gelişmiş kullanım örnekleri için kullanılamaz.

SetQueueAttributes işlemi, tam erişim politikası dilini destekler. Örneğin, politika dilini kullanarak bir ileti kuyruğuna erişimi IP adresine ve günün saatine göre kısıtlayabilirsiniz. Daha fazla bilgi için Amazon SQS Geliştirici Kılavuzu'ndaki Amazon SQS Politika Örnekleri bölümüne bakın.

Hizmet erişimi ve bölgeler

Hizmetlerin bölgelere göre erişilebilirlik durumunu görmek için AWS Küresel Altyapısı Bölge Tablosu bölümüne bakın.

Hayır. Her Amazon SQS ileti kuyruğu ilgili bölge içinde bağımsızdır.

Amazon SQS fiyatlandırması, Çin (Pekin) hariç tüm bölgelerde aynıdır. Daha fazla bilgi için Amazon SQS Fiyatlandırması bölümüne bakın.

Tek bir bölge içinde Amazon SQS ile Amazon EC2 ya da AWS Lambda arasında ücretsiz olarak veri aktarabilirsiniz.

Farklı bölgelerdeki Amazon SQS ile Amazon EC2 veya AWS Lambda arasında veri aktarımı yaptığınızda, normal veri aktarım fiyatı üzerinden ücret ödersiniz. Daha fazla bilgi için Amazon SQS Fiyatlandırması bölümüne bakın.

Teslim edilemeyen mesaj kuyrukları

Teslim edilemeyen ileti kuyruğu; kaynak kuyruğun tüketici uygulaması, iletileri başarılı bir şekilde tüketemediği takdirde kaynak kuyruğun, iletileri gönderebileceği bir Amazon SQS kuyruğudur. Teslim edilemeyen ileti kuyrukları, ileti tüketim hatalarını ele almanızı ve tüketilemeyen iletilerin yaşam döngüsünü yönetmenizi kolaylaştırır. Teslim edilemeyen ileti kuyruğuna gönderilen iletiler için bir alarm yapılandırabilir, iletinin kuyruğa gönderilmesine neden olan istisnalara yönelik günlükleri inceleyebilir ve tüketici uygulaması sorunlarının nedenlerini tespit etmek için ileti içeriklerini analiz edebilirsiniz. Tüketici uygulamanızın sorununu giderdikten sonra iletileri teslim edilemeyen ileti kuyruğunuzdan kaynak kuyruğa yönlendirebilirsiniz.

Kaynak kuyruğunuzu oluştururken Amazon SQS, bir teslim edilemeyen ileti kuyruğu (DLQ) ve SQS'nin hangi koşulda iletileri DLQ'ya taşıması gerektiğini belirlemenize olanak tanır. Koşul, bir tüketicinin iletiyi kuyruktan alabilme sayısıdır ve bu, maxReceiveCount olarak tanımlanır. Teslim edilemeyen ileti kuyruğunun bir kaynak kuyruk ve maxReceiveCount ile yapılandırılmasına yönlendirme politikası denir. Bir ileti için ReceiveCount değeri kuyruğa ilişkin maxReceiveCount değerini aştığında Amazon SQS, iletiyi (orijinal ileti kimliği ile birlikte) teslim edilemeyen ileti kuyruğuna taşımak üzere tasarlanmıştır. Örneğin, kaynak kuyruk maxReceiveCount değeri beş olacak şekilde bir yönlendirme politikası içeriyorsa ve kaynak kuyruğun tüketicisi bu iletiyi başarılı şekilde tüketemeden altı kez aldıysa SQS, iletiyi teslim edilemeyen ileti kuyruğuna taşır.

Yönlendirme politikası, tüketilemeyen iletileri kaynak kuyruktan teslim edilemeyen ileti kuyruğuna taşıyarak bu iletilere ait yaşam döngüsünün ilk yarısını yönetir. Ardından, teslim edilemeyen ileti kuyruğundan kaynak kuyruğa verimli şekilde yönlendirme süreci, bu iletileri aşağıdaki gibi ait oldukları kaynak kuyruğa geri taşıyarak döngüyü tamamlar.

AWS Yerel Alanlar nasıl çalışır?

Öncelikle, ileti özniteliklerini ve ilgili meta verileri göstererek teslim edilemeyen ileti kuyruğunda bulunan iletilerin bir örneğini incelemenize olanak tanır. Ardından, iletileri inceledikten sonra bunları kaynak kuyruklarına geri taşıyabilirsiniz. Ayrıca, Amazon SQS'nin iletileri teslim edilemeyen ileti kuyruğundan kaynak kuyruğa hangi hızda taşıyacağını yapılandırmak için yönlendirme hızını seçebilirsiniz.

Evet. Ancak FIFO kuyrukları ile FIFO teslim edilemeyen ileti kuyruğu kullanmanız gerekir. (Benzer şekilde, standart kuyrukla yalnızca standart bir teslim edilemeyen ileti kuyruğu kullanabilirsiniz.)