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.BaseHandlerServiceBusReceiverazure.servicebus._common.receiver_mixins.ReceiverMixinServiceBusReceiver
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
Service Bus ad alanının tam konak adı. Ad alanı biçimi: .servicebus.windows.net.
- credential
- TokenCredential 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 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.
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
Dönüş türü
Özel durumlar
Ö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
complete_message
İletiyi tamamlayın.
Bu işlem, iletiyi kuyruktan kaldırır.
complete_message(message: ServiceBusReceivedMessage) -> None
Parametreler
Dönüş türü
Özel durumlar
Ö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
İ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 = 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
Dönüş türü
Özel durumlar
Ö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
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
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ı.
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
Ö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
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
Ö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
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.
İ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
Ö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
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
Ö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
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
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin