Aracılığıyla paylaş


ServiceBusReceiver Sınıf

ServiceBusReceiver sınıfı, Azure Service Bus Kuyruğundan veya Konu 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: sürekli olarak gelen iletileri sürekli almak için receive() kanalıdır.

ServiceBusReceiver örneği oluşturmak için lütfen ~azure.servicebus.ServiceBusClient yöntemini kullanın get_<queue/subscription>_receiver .

Devralma
azure.servicebus._base_handler.BaseHandler
ServiceBusReceiver
azure.servicebus._common.receiver_mixins.ReceiverMixin
ServiceBusReceiver

Oluşturucu

ServiceBusReceiver(fully_qualified_namespace: str, credential: TokenCredential | 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
TokenCredential 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 ve *get_token(self, kapsamlar) yöntemini uygulayan nesneleri kabul eder 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ğlanıyor olduğu belirtilen Konu başlığı altındaki belirli Service Bus Aboneliğinin yolu.

max_wait_time
Optional[float]

Alınan iletiler arasındaki saniyeler içinde zaman aşımı oluşur ve alıcı otomatik olarak almayı durdurur. Varsayılan değer Yok'tur, yani zaman aşımı yoktur.

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 iletiler kuyruktan kaldırılmadan önce belirli bir kilit süresi içinde kapatılmalıdır. 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.

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'dir.

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: 'username', 'password'.

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.AutoLockRenewer sağlanabilir. Alıcı bir oturum alıcısıysa, bunun yerine oturuma uygulanır.

prefetch_count
int

Hizmete yapılan 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 birer birer işlenir. prefetch_count 0 olması durumunda ServiceBusReceiver.receive , hizmete yönelik isteğinde max_message_count önbelleğe almayı (sağlanırsa) dener.

client_identifier
str

İstemci örneğini benzersiz olarak tanımlamak için dize tabanlı tanımlayıcı. Service Bus, hataların daha kolay ilişkilendirilmesi 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 daha fazla inceleme veya işleme gerektiren iletileri depolamak için kullanılabilen 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

İletiye meydan okur.

Bu ileti kuyrukta kalır ancak alınabilmesi için özel olarak sıra numarası tarafından istenmesi gerekir.

next
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 ertelenen 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 toplu iletiler 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ı hizmete gönderilen istekteki max_message_count (sağlanırsa) iletileri önbelleğe almayı dener.

Bu çağrı, belirtilen toplu iş boyutuna göre hızlı bir şekilde geri dönmeye öncelik verecek ve bu nedenle en az bir ileti alındığında ve belirtilen toplu iş boyutundan bağımsız olarak gelen iletilerde bir boşluk olduğunda döndürülecektir.

renew_message_lock

İleti kilidini yenileyin.

Bu, yeniden işlenecek kuyruğa döndürülmediğinden emin olmak 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.

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 = servicebus_receiver.receive_messages(max_wait_time=5)
       for message in messages:
           servicebus_receiver.abandon_message(message)

close

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.

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 = servicebus_receiver.receive_messages(max_wait_time=5)
       for message in messages:
           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 daha fazla inceleme veya işleme gerektiren iletileri depolamak için kullanılabilen bir alt sıradır. Kuyruk, süresi dolan iletileri Teslim Edilemeyen İleti kuyruğuna gönderecek şekilde de yapılandırılabilir.

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

İletiyi teslim edilmemenin 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 = servicebus_receiver.receive_messages(max_wait_time=5)
       for message in messages:
           servicebus_receiver.dead_letter_message(message)

defer_message

İletiye meydan okur.

Bu ileti kuyrukta kalır ancak alınabilmesi için özel olarak sıra numarası tarafından istenmesi gerekir.

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 = servicebus_receiver.receive_messages(max_wait_time=5)
       for message in messages:
           servicebus_receiver.defer_message(message)

next

next()

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

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.

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

Denenecek ve göz atacak en fazla ileti sayısı. 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'tur, yani zaman aşımı yoktur.

Döndürülenler

~azure.servicebus.ServiceBusReceivedMessage 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 bekleyen iletilere bakın.


   with servicebus_receiver:
       messages = servicebus_receiver.peek_messages()
       for message in messages:
           print(str(message))

receive_deferred_messages

Daha önce ertelenen 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_deferred_messages(sequence_numbers: int | List[int], *, timeout: float | None = None, **kwargs: Any) -> List[ServiceBusReceivedMessage]

Parametreler

sequence_numbers
Union[int,List[int]]
Gerekli

Ertelenen 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'tur, yani zaman aşımı yoktur.

Döndürülenler

İstenen ~azure.servicebus.ServiceBusReceivedMessage örneklerinin 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

ServiceBus'tan ertelenen iletiler alın.


   with servicebus_receiver:
       deferred_sequenced_numbers = []
       messages = servicebus_receiver.receive_messages(max_wait_time=5)
       for message in messages:
           deferred_sequenced_numbers.append(message.sequence_number)
           print(str(message))
           servicebus_receiver.defer_message(message)

       received_deferred_msg = servicebus_receiver.receive_deferred_messages(
           sequence_numbers=deferred_sequenced_numbers
       )

       for msg in received_deferred_msg:
           servicebus_receiver.complete_message(msg)

receive_messages

Bir kerede toplu iletiler 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ı hizmete gönderilen istekteki max_message_count (sağlanırsa) iletileri önbelleğe almayı dener.

Bu çağrı, belirtilen toplu iş boyutuna göre hızlı bir şekilde geri dönmeye öncelik verecek ve bu nedenle en az bir ileti alındığında ve belirtilen toplu iş boyutundan bağımsız olarak gelen iletilerde bir boşluk olduğunda döndürülecektir.

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 ve gelen akış hızına bağlıdır. Hiçbiri olarak ayarlanması tamamen ön yapılandırmaya 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, 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

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.


   with servicebus_receiver:
       messages = servicebus_receiver.receive_messages(max_wait_time=5)
       for message in messages:
           print(str(message))
           servicebus_receiver.complete_message(message)

renew_message_lock

İleti kilidini yenileyin.

Bu, yeniden işlenecek kuyruğa döndürülmediğinden emin olmak 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.

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'tır, yani zaman aşımı yoktur.

Döndürülenler

Kilidin süresi dolmak üzere 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 = servicebus_receiver.receive_messages(max_wait_time=5)
       for message in messages:
           servicebus_receiver.renew_message_lock(message)

Öznitelikler

client_identifier

Alıcı örneğiyle ilişkili ServiceBusReceiver client_identifier alın.

Dönüş türü

str

session

Alıcıyla bağlantılı ServiceBusSession nesnesini alın. 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


       with servicebus_client.get_queue_receiver(queue_name=queue_name, session_id=session_id) as receiver:
           session = receiver.session