ServiceBusSender 類別
ServiceBusSender 類別會定義將訊息傳送至Azure 服務匯流排佇列或主題的高階介面。
請使用 get_<queue/topic>_sender
~azure.servicebus.ServiceBusClient 的 方法來建立 ServiceBusSender 實例。
- 繼承
-
azure.servicebus._base_handler.BaseHandlerServiceBusSenderazure.servicebus._servicebus_sender.SenderMixinServiceBusSender
建構函式
ServiceBusSender(fully_qualified_namespace: str, credential: TokenCredential | AzureSasCredential | AzureNamedKeyCredential, *, queue_name: str | None = None, topic_name: str | None = None, **kwargs: Any)
參數
- credential
- TokenCredential 或 AzureSasCredential 或 AzureNamedKeyCredential
用於驗證的認證物件,會實作用於取得權杖的特定介面。 它接受 azure-identity 程式庫所產生的認證物件,以及實作 *get_token (自我、 範圍) 方法的物件,或者也可以提供 AzureSasCredential。
- queue_name
- str
用戶端所連線的特定服務匯流排佇列路徑。
- topic_name
- str
用戶端所連線之特定服務匯流排主題的路徑。
- logging_enable
- bool
是否要將網路追蹤記錄輸出至記錄器。 預設值為 False。
- transport_type
- TransportType
將用於與服務匯流排服務通訊的傳輸通訊協定類型。 預設值為 TransportType.Amqp。
- http_proxy
- Dict
HTTP Proxy 設定。 這必須是具有下列索引鍵的字典: 'proxy_hostname' ( str 值) 和 'proxy_port' (int 值) 。 此外,也可能會出現下列金鑰: 'username'、'password'。
- user_agent
- str
如果指定,這會新增到內建使用者代理程式字串前面。
- client_identifier
- str
用來唯一識別用戶端實例的字串型識別碼。 服務匯流排會將它與某些錯誤訊息產生關聯,以便更輕鬆地相互關聯錯誤。 如果未指定,則會產生唯一識別碼。
- socket_timeout
- float
連接上基礎通訊端在傳送和接收資料之前應該等候的時間,以秒為單位。TransportType.Amqp 的預設值為 0.2,而 TransportType.AmqpOverWebsocket 的預設值為 1。 如果因為寫入逾時而發生連線錯誤,可能需要傳入大於預設值。
變數
- fully_qualified_namespace
- str
服務匯流排命名空間的完整主機名稱。 命名空間格式為: .servicebus.windows.net。
- entity_name
- str
用戶端所連線之實體的名稱。
方法
cancel_scheduled_messages |
取消一或多個先前已排程且仍在擱置中的訊息。 |
close |
如果處理常式使用個別連接) ,請關閉處理常式連結 (和連線。 如果處理常式已經關閉,此作業將不會執行任何動作。 |
create_message_batch |
建立 ServiceBusMessageBatch 物件,其大小上限為受max_size_in_bytes限制的所有內容。 max_size不應大於服務所定義的允許訊息大小上限。 |
schedule_messages |
傳送要在特定時間排入佇列的訊息或多個訊息。 傳回排入佇列訊息的序號清單。 |
send_messages |
傳送訊息和區塊,直到收到通知或作業逾時為止。 如果已提供訊息清單,嘗試以單一批次的形式傳送訊息,如果無法放入單一批次,則會擲回 ValueError 。 |
cancel_scheduled_messages
取消一或多個先前已排程且仍在擱置中的訊息。
cancel_scheduled_messages(sequence_numbers: int | List[int], *, timeout: float | None = None, **kwargs: Any) -> None
參數
- timeout
- float
作業逾時總計,以秒為單位,包括所有重試。 如果指定,此值必須大於 0。 預設值為 None,表示沒有逾時。
傳回類型
例外狀況
範例
取消排定在未來傳送的訊息
with servicebus_sender:
servicebus_sender.cancel_scheduled_messages(sequence_nums)
close
如果處理常式使用個別連接) ,請關閉處理常式連結 (和連線。
如果處理常式已經關閉,此作業將不會執行任何動作。
close() -> None
傳回類型
例外狀況
create_message_batch
建立 ServiceBusMessageBatch 物件,其大小上限為受max_size_in_bytes限制的所有內容。 max_size不應大於服務所定義的允許訊息大小上限。
create_message_batch(max_size_in_bytes: int | None = None) -> ServiceBusMessageBatch
參數
ServiceBusMessageBatch 物件可以保存的最大位元組資料大小。 根據預設,此值取決於您的服務匯流排層。
傳回
ServiceBusMessageBatch 物件
傳回類型
例外狀況
範例
在有限大小內建立 ServiceBusMessageBatch 物件
with servicebus_sender:
batch_message = servicebus_sender.create_message_batch()
batch_message.add_message(ServiceBusMessage("Single message inside batch"))
schedule_messages
傳送要在特定時間排入佇列的訊息或多個訊息。 傳回排入佇列訊息的序號清單。
schedule_messages(messages: MessageTypes, schedule_time_utc: datetime, *, timeout: float | None = None, **kwargs: Any) -> List[int]
參數
- messages
- Union[ServiceBusMessage, AmqpAnnotatedMessage, List[Union[ServiceBusMessage, AmqpAnnotatedMessage]]]
要排程的訊息或訊息清單。
- timeout
- float
作業逾時總計,以秒為單位,包括所有重試。 如果指定,此值必須大於 0。 預設值為 None,表示沒有逾時。
傳回
排入佇列之訊息的序號清單。
傳回類型
例外狀況
範例
排程未來要傳送的訊息
with servicebus_sender:
scheduled_time_utc = datetime.datetime.utcnow() + datetime.timedelta(seconds=30)
scheduled_messages = [ServiceBusMessage("Scheduled message") for _ in range(10)]
sequence_nums = servicebus_sender.schedule_messages(scheduled_messages, scheduled_time_utc)
send_messages
傳送訊息和區塊,直到收到通知或作業逾時為止。
如果已提供訊息清單,嘗試以單一批次的形式傳送訊息,如果無法放入單一批次,則會擲回 ValueError 。
send_messages(message: MessageTypes | ServiceBusMessageBatch, *, timeout: float | None = None, **kwargs: Any) -> None
參數
- message
- Union[ServiceBusMessage, ServiceBusMessageBatch, AmqpAnnotatedMessage, List[Union[ServiceBusMessage, AmqpAnnotatedMessage]]]
要傳送的 ServiceBus 訊息。
傳回類型
例外狀況
範例
傳送訊息。
with servicebus_sender:
message_send = ServiceBusMessage("Hello World")
servicebus_sender.send_messages(message_send)
屬性
client_identifier
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應