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
ServiceBusReceiver
azure.servicebus.aio._base_handler_async.BaseHandler
ServiceBusReceiver
azure.servicebus._common.receiver_mixins.ReceiverMixin
ServiceBusReceiver

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
Gerekli

Service Bus ad alanının tam konak adı. Ad alanı biçimi: .servicebus.windows.net.

credential
AsyncTokenCredential veya AzureSasCredential veya AzureNamedKeyCredential
Gerekli

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.

max_wait_time
Optional[float]

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

message
ServiceBusReceivedMessage
Gerekli

Alınan ileti terk edilecek.

Dönüş türü

Özel durumlar

azure.servicebus.exceptions.MessageAlreadySettled if the message has been settled.
azure.servicebus.exceptions.SessionLockLostError if session lock has already expired.
azure.servicebus.exceptions.ServiceBusError when errors happen.

Ö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

azure.servicebus.exceptions.MessageAlreadySettled if the message has been settled.
azure.servicebus.exceptions.SessionLockLostError if session lock has already expired.
azure.servicebus.exceptions.ServiceBusError when errors happen.

complete_message

İletiyi tamamlayın.

Bu işlem, iletiyi kuyruktan kaldırır.

async complete_message(message: ServiceBusReceivedMessage) -> None

Parametreler

message
ServiceBusReceivedMessage
Gerekli

Tamamlanmak üzere alınan ileti.

Dönüş türü

Özel durumlar

azure.servicebus.exceptions.MessageAlreadySettled if the message has been settled.
azure.servicebus.exceptions.SessionLockLostError if session lock has already expired.
azure.servicebus.exceptions.ServiceBusError when errors happen.

Ö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

message
ServiceBusReceivedMessage
Gerekli

Alınan iletinin teslim edilemeyen harfle yazılması.

reason
Optional[str]
varsayılan değer: None

İletinin teslim edilme nedeni.

error_description
Optional[str]
varsayılan değer: None

İletinin teslim edilmediği için ayrıntılı hata açıklaması.

Dönüş türü

Özel durumlar

azure.servicebus.exceptions.MessageAlreadySettled if the message has been settled.
azure.servicebus.exceptions.SessionLockLostError if session lock has already expired.
azure.servicebus.exceptions.ServiceBusError when errors happen.

Ö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

message
ServiceBusReceivedMessage
Gerekli

Ertelenecek alınan ileti.

Dönüş türü

Özel durumlar

azure.servicebus.exceptions.MessageAlreadySettled if the message has been settled.
azure.servicebus.exceptions.SessionLockLostError if session lock has already expired.
azure.servicebus.exceptions.ServiceBusError when errors happen.

Ö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
varsayılan değer: 1

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ı.

timeout
Optional[float]

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

azure.servicebus.exceptions.MessageAlreadySettled if the message has been settled.
azure.servicebus.exceptions.SessionLockLostError if session lock has already expired.
azure.servicebus.exceptions.ServiceBusError when errors happen.

Ö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

sequence_numbers
Union[int, list[int]]
Gerekli

Ertelenmiş iletilerin sıralı numaralarının listesi.

timeout
Optional[float]

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ü

list[<xref:azure.servicebus.aio.ServiceBusReceivedMessage>]

Özel durumlar

azure.servicebus.exceptions.MessageAlreadySettled if the message has been settled.
azure.servicebus.exceptions.SessionLockLostError if session lock has already expired.
azure.servicebus.exceptions.ServiceBusError when errors happen.

Ö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

max_message_count
Optional[int]
varsayılan değer: 1

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.

max_wait_time
Optional[float]
varsayılan değer: None

İ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ü

list[<xref:azure.servicebus.aio.ServiceBusReceivedMessage>]

Özel durumlar

azure.servicebus.exceptions.MessageAlreadySettled if the message has been settled.
azure.servicebus.exceptions.SessionLockLostError if session lock has already expired.
azure.servicebus.exceptions.ServiceBusError when errors happen.

Ö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

message
ServiceBusReceivedMessage
Gerekli

Kilidin yenileneceği ileti.

timeout
Optional[float]

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

TypeError if the message is sessionful.
azure.servicebus.exceptions.MessageAlreadySettled if the message has been settled.
azure.servicebus.exceptions.MessageLockLostError if message lock has already expired.

Ö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

Alıcı örneğiyle ilişkili ServiceBusReceiver istemci tanımlayıcısını alın.

Dönüş türü

str

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