ServiceBusReceiver Sınıf
ServiceBusReceiver sınıfı, Azure Service Bus Kuyruğundan veya Konu Başlığı Aboneliğinden ileti almak için üst düzey bir arabirim tanımlar.
İleti alındı bilgisi için iki birincil kanal, iletiler için tek bir istekte bulunmak ve alıcıdaki ileti için zaman uyumsuz hale getirmek için receive() kanalıdır: gelen iletileri sürekli olarak sürekli olarak almak.
ServiceBusReceiver örneği oluşturmak için lütfen ~azure.servicebus.aio.ServiceBusClient yöntemini kullanın get_<queue/subscription>_receiver
.
- Devralma
-
ServiceBusReceiverazure.servicebus.aio._base_handler_async.BaseHandlerServiceBusReceiverazure.servicebus._common.receiver_mixins.ReceiverMixinServiceBusReceiver
Oluşturucu
ServiceBusReceiver(fully_qualified_namespace: str, credential: AsyncTokenCredential | AzureSasCredential | AzureNamedKeyCredential, *, queue_name: str | None = None, topic_name: str | None = None, subscription_name: str | None = None, receive_mode: ServiceBusReceiveMode | str = ServiceBusReceiveMode.PEEK_LOCK, max_wait_time: float | None = None, auto_lock_renewer: AutoLockRenewer | None = None, prefetch_count: int = 0, **kwargs: Any)
Parametreler
- fully_qualified_namespace
- str
Service Bus ad alanının tam konak adı. Ad alanı biçimi: .servicebus.windows.net.
- credential
- AsyncTokenCredential veya AzureSasCredential veya AzureNamedKeyCredential
Belirteçleri almak için belirli bir arabirim uygulayan kimlik doğrulaması için kullanılan kimlik bilgisi nesnesi. Azure-identity kitaplığı tarafından oluşturulan kimlik bilgisi nesnelerini kabul eder ve *get_token(self, kapsamlar) yöntemini uygulayan nesneler veya alternatif olarak bir AzureSasCredential da sağlanabilir.
- queue_name
- str
İstemcinin bağlandığınız belirli Service Bus Kuyruğunun yolu.
- topic_name
- str
İstemcinin bağlandığı Aboneliği içeren belirli Service Bus Konusunun yolu.
- subscription_name
- str
İstemcinin bağlanacak belirtilen Konu başlığı altındaki belirli Service Bus Aboneliğinin yolu.
- receive_mode
- Union[ServiceBusReceiveMode, str]
varlıktan iletilerin alınacağı mod. İki seçenek PEEK_LOCK ve RECEIVE_AND_DELETE. PEEK_LOCK ile alınan iletilerin kuyruktan kaldırılmadan önce belirli bir kilit süresi içinde kapatılması gerekir. RECEIVE_AND_DELETE ile alınan iletiler kuyruktan hemen kaldırılır ve istemci iletiyi işleyemezse daha sonra terk edilemez veya yeniden alınamaz. Varsayılan mod PEEK_LOCK.
Alıcı otomatik olarak almayı durduracak olan alınan iletiler arasındaki saniyeler içinde zaman aşımı. Varsayılan değer Yok'tır, yani zaman aşımı yoktur.
- logging_enable
- bool
Günlükçüye ağ izleme günlüklerinin çıkışının yapılıp yapılmaydığı. Varsayılan değer False'tur.
- transport_type
- TransportType
Service Bus hizmetiyle iletişim kurmak için kullanılacak aktarım protokolünün türü. Varsayılan değer TransportType.Amqp'tir.
- http_proxy
- Dict
HTTP proxy ayarları. Bu, şu anahtarlara sahip bir sözlük olmalıdır: 'proxy_hostname' (str değeri) ve 'proxy_port' (int değeri). Ayrıca aşağıdaki anahtarlar da mevcut olabilir: 'kullanıcı adı', 'parola'.
- user_agent
- str
Belirtilirse, bu yerleşik kullanıcı aracısı dizesinin önüne eklenir.
- auto_lock_renewer
- Optional[AutoLockRenewer]
İletilerin alındı bilgisi üzerine otomatik olarak kaydedilmesi için ~azure.servicebus.aio.AutoLockRenewer sağlanabilir. Alıcı bir oturum alıcısıysa, bunun yerine oturuma uygulanır.
- prefetch_count
- int
Hizmete yönelik her istekle önbelleğe alınacak en fazla ileti sayısı. Bu ayar yalnızca gelişmiş performans ayarlama içindir. Bu değerin artırılması ileti aktarım hızı performansını artırır, ancak iletilerin yeterince hızlı işlenmediği takdirde önbelleğe alınırken süresinin dolma olasılığını artırır. Varsayılan değer 0'dır, yani iletiler hizmetten alınır ve teker teker işlenir. prefetch_count 0 olması durumunda ServiceBusReceiver.receive , hizmete yönelik isteğinde max_message_count önbelleğe almayı (sağlandıysa) dener.
- client_identifier
- str
İstemci örneğini benzersiz olarak tanımlamak için dize tabanlı tanımlayıcı. Service Bus, hataların daha kolay bağıntılanması için bunu bazı hata iletileriyle ilişkilendirir. Belirtilmezse, benzersiz bir kimlik oluşturulur.
- socket_timeout
- float
Zaman aşımına uğramadan önce bağlantıdaki temel yuvanın veri gönderirken ve alırken beklemesi gereken saniye cinsinden süre. Varsayılan değer TransportType.Amqp için 0.2 ve TransportType.AmqpOverWebsocket için 1'dir. Yazma zaman aşımı nedeniyle bağlantı hataları oluşuyorsa, varsayılan değerden daha büyük bir değerin geçirilmesi gerekebilir.
Değişkenler
- fully_qualified_namespace
- str
Service Bus ad alanının tam konak adı. Ad alanı biçimi: .servicebus.windows.net.
- entity_path
- str
İstemcinin bağlandığını varlığın yolu.
Yöntemler
abandon_message |
İletiyi bırakın. Bu ileti kuyruğa döndürülür ve yeniden alınabilir hale getirilecektir. |
close | |
complete_message |
İletiyi tamamlayın. Bu işlem, iletiyi kuyruktan kaldırır. |
dead_letter_message |
İletiyi Teslim Edilemeyen İleti kuyruğuna taşıyın. Teslim Edilemeyen İleti kuyruğu, doğru işlenemeyen veya başka bir şekilde inceleme veya işleme gerektiren iletileri depolamak için kullanılabilecek bir alt sıradır. Kuyruk, süresi dolan iletileri Teslim Edilemeyen İleti kuyruğuna gönderecek şekilde de yapılandırılabilir. |
defer_message |
İletiyi geçersiz hale getir. Bu ileti kuyrukta kalır ancak alınabilmesi için özel olarak sıra numarasıyla istenmesi gerekir. |
peek_messages |
Kuyrukta bekleyen iletilere göz atın. Göz atılan iletiler kuyruktan kaldırılmaz ve kilitlenmez. Bunlar tamamlanamaz, ertelenemez veya teslim edilemez. |
receive_deferred_messages |
Daha önce ertelenmiş iletileri alma. Bölümlenmiş bir varlıktan ertelenen iletiler alınırken, sağlanan tüm sıra numaralarının aynı bölümdeki iletiler olması gerekir. |
receive_messages |
Bir kerede bir toplu ileti alın. Birden çok iletiyi aynı anda işlemek veya tek bir çağrı olarak geçici bir alma gerçekleştirmek istiyorsanız bu yaklaşım en uygun yöntemdir. Tek bir toplu işlemde alınan ileti sayısının, alıcı için prefetch_count ayarlanıp ayarlanmadığına bağlı olacağını unutmayın. Alıcı için prefetch_count ayarlanmadıysa, alıcı max_message_count (sağlanırsa) iletileri hizmete yönelik istek içinde önbelleğe almaya çalışır. Bu çağrı, belirtilen toplu iş boyutuna göre hızlı döndürmeyi önceliklendirir ve en az bir ileti alınır alınmaz ve belirtilen toplu iş boyutundan bağımsız olarak gelen iletilerde boşluk olur. |
renew_message_lock |
İleti kilidini yenileyin. Bu, iletinin yeniden işlenecek kuyruğa döndürülmemesini sağlamak için iletinin kilidini korur. İletiyi tamamlamak (veya başka bir şekilde çözmek) için kilidin korunması gerekir ve süresi dolmuş olamaz; süresi dolmuş bir kilit yenilenemez. RECEIVE_AND_DELETE modu aracılığıyla alınan iletiler kilitli değildir ve bu nedenle yenilenemez. Bu işlem yalnızca oturum olmayan iletiler için de kullanılabilir. |
abandon_message
İletiyi bırakın.
Bu ileti kuyruğa döndürülür ve yeniden alınabilir hale getirilecektir.
async abandon_message(message: ServiceBusReceivedMessage) -> None
Parametreler
Dönüş türü
Özel durumlar
Örnekler
Alınan iletiyi bırakma.
messages = await servicebus_receiver.receive_messages(max_wait_time=5)
for message in messages:
await servicebus_receiver.abandon_message(message)
close
async close() -> None
Özel durumlar
complete_message
İletiyi tamamlayın.
Bu işlem, iletiyi kuyruktan kaldırır.
async complete_message(message: ServiceBusReceivedMessage) -> None
Parametreler
Dönüş türü
Özel durumlar
Örnekler
Alınan iletiyi tamamlayın.
messages = await servicebus_receiver.receive_messages(max_wait_time=5)
for message in messages:
await servicebus_receiver.complete_message(message)
dead_letter_message
İletiyi Teslim Edilemeyen İleti kuyruğuna taşıyın.
Teslim Edilemeyen İleti kuyruğu, doğru işlenemeyen veya başka bir şekilde inceleme veya işleme gerektiren iletileri depolamak için kullanılabilecek bir alt sıradır. Kuyruk, süresi dolan iletileri Teslim Edilemeyen İleti kuyruğuna gönderecek şekilde de yapılandırılabilir.
async dead_letter_message(message: ServiceBusReceivedMessage, reason: str | None = None, error_description: str | None = None) -> None
Parametreler
İletinin teslim edilmediği için ayrıntılı hata açıklaması.
Dönüş türü
Özel durumlar
Örnekler
Teslim edilemeyen ileti alındı.
messages = await servicebus_receiver.receive_messages(max_wait_time=5)
for message in messages:
await servicebus_receiver.dead_letter_message(message)
defer_message
İletiyi geçersiz hale getir.
Bu ileti kuyrukta kalır ancak alınabilmesi için özel olarak sıra numarasıyla istenmesi gerekir.
async defer_message(message: ServiceBusReceivedMessage) -> None
Parametreler
Dönüş türü
Özel durumlar
Örnekler
Alınan iletiyi erteleme.
messages = await servicebus_receiver.receive_messages(max_wait_time=5)
for message in messages:
await servicebus_receiver.defer_message(message)
peek_messages
Kuyrukta bekleyen iletilere göz atın.
Göz atılan iletiler kuyruktan kaldırılmaz ve kilitlenmez. Bunlar tamamlanamaz, ertelenemez veya teslim edilemez.
async peek_messages(max_message_count: int = 1, *, sequence_number: int = 0, timeout: float | None = None, **kwargs: Any) -> List[ServiceBusReceivedMessage]
Parametreler
- max_message_count
- int
Denemek ve göz atmak için ileti sayısı üst sınırı. Varsayılan değer 1’dir.
- sequence_number
- int
İletilere göz atmaya başlamak için bir ileti dizisi numarası.
Tüm yeniden denemeler dahil olmak üzere saniye olarak toplam işlem zaman aşımı. Belirtilirse değer 0'dan büyük olmalıdır. Varsayılan değer Yok'tır, yani zaman aşımı yoktur.
Döndürülenler
~azure.servicebus.ServiceBusReceivedMessage nesnelerinin listesi.
Dönüş türü
Özel durumlar
Örnekler
Kuyruktaki iletilere göz atın.
async with servicebus_receiver:
messages = await servicebus_receiver.peek_messages()
for message in messages:
print(str(message))
receive_deferred_messages
Daha önce ertelenmiş iletileri alma.
Bölümlenmiş bir varlıktan ertelenen iletiler alınırken, sağlanan tüm sıra numaralarının aynı bölümdeki iletiler olması gerekir.
async receive_deferred_messages(sequence_numbers: int | List[int], *, timeout: float | None = None, **kwargs: Any) -> List[ServiceBusReceivedMessage]
Parametreler
Tüm yeniden denemeler dahil olmak üzere saniye olarak toplam işlem zaman aşımı. Belirtilirse değer 0'dan büyük olmalıdır. Varsayılan değer Yok'tır, yani zaman aşımı yoktur.
Döndürülenler
Alınan iletilerin listesi.
Dönüş türü
Özel durumlar
Örnekler
ServiceBus'tan ertelenen iletiler alın.
async with servicebus_receiver:
deferred_sequenced_numbers = []
messages = await servicebus_receiver.receive_messages(max_wait_time=5)
for message in messages:
deferred_sequenced_numbers.append(message.sequence_number)
print(str(message))
await servicebus_receiver.defer_message(message)
received_deferred_msg = await servicebus_receiver.receive_deferred_messages(
sequence_numbers=deferred_sequenced_numbers
)
for message in received_deferred_msg:
await servicebus_receiver.complete_message(message)
receive_messages
Bir kerede bir toplu ileti alın.
Birden çok iletiyi aynı anda işlemek veya tek bir çağrı olarak geçici bir alma gerçekleştirmek istiyorsanız bu yaklaşım en uygun yöntemdir.
Tek bir toplu işlemde alınan ileti sayısının, alıcı için prefetch_count ayarlanıp ayarlanmadığına bağlı olacağını unutmayın. Alıcı için prefetch_count ayarlanmadıysa, alıcı max_message_count (sağlanırsa) iletileri hizmete yönelik istek içinde önbelleğe almaya çalışır.
Bu çağrı, belirtilen toplu iş boyutuna göre hızlı döndürmeyi önceliklendirir ve en az bir ileti alınır alınmaz ve belirtilen toplu iş boyutundan bağımsız olarak gelen iletilerde boşluk olur.
async receive_messages(max_message_count: int | None = 1, max_wait_time: float | None = None) -> List[ServiceBusReceivedMessage]
Parametreler
Toplu iş içindeki en fazla ileti sayısı. Döndürülen gerçek sayı, prefetch_count boyutuna ve gelen akış hızına bağlıdır. Hiçbiri olarak ayarlanması, ön yapılandırmaya tamamen bağlıdır. Varsayılan değer 1'dir.
İlk iletinin gelmesi için saniye cinsinden bekleme süresi üst sınırı. İleti gelmezse ve zaman aşımı belirtilmezse, bağlantı kapatılana kadar bu çağrı döndürülmeyecektir. Belirtilirse ve zaman aşımı süresi içinde ileti gelmezse, boş bir liste döndürülür.
Döndürülenler
Alınan iletilerin listesi. Kullanılabilir ileti yoksa, bu boş bir liste olur.
Dönüş türü
Özel durumlar
Örnekler
ServiceBus'tan ileti alma.
async with servicebus_receiver:
messages = await servicebus_receiver.receive_messages(max_wait_time=5)
for message in messages:
print(str(message))
await servicebus_receiver.complete_message(message)
renew_message_lock
İleti kilidini yenileyin.
Bu, iletinin yeniden işlenecek kuyruğa döndürülmemesini sağlamak için iletinin kilidini korur.
İletiyi tamamlamak (veya başka bir şekilde çözmek) için kilidin korunması gerekir ve süresi dolmuş olamaz; süresi dolmuş bir kilit yenilenemez.
RECEIVE_AND_DELETE modu aracılığıyla alınan iletiler kilitli değildir ve bu nedenle yenilenemez. Bu işlem yalnızca oturum olmayan iletiler için de kullanılabilir.
async renew_message_lock(message: ServiceBusReceivedMessage, *, timeout: float | None = None, **kwargs: Any) -> datetime
Parametreler
Tüm yeniden denemeler dahil olmak üzere saniye olarak toplam işlem zaman aşımı. Belirtilirse değer 0'dan büyük olmalıdır. Varsayılan değer Yok'tur, yani zaman aşımı yoktur.
Döndürülenler
Kilidin sona erecek şekilde ayarlandığı utc tarih saati.
Dönüş türü
Özel durumlar
Örnekler
Alınan iletideki kilidi yenileyin.
messages = await servicebus_receiver.receive_messages(max_wait_time=5)
for message in messages:
await servicebus_receiver.renew_message_lock(message)
Öznitelikler
client_identifier
session
ServiceBusSession nesnesini alıcıyla ilişkilendirin. Oturum yalnızca oturum etkin varlıklar için kullanılabilir; oturum olmayan bir alıcıda çağrılırsa Hiçbiri döndürür.
Dönüş türü
Örnekler
Alıcıdan oturum alma
async with servicebus_client.get_queue_receiver(queue_name=queue_name, session_id=session_id) as receiver:
session = receiver.session