Share via


ServiceBusSender 類別

ServiceBusSender 類別會定義將訊息傳送至Azure 服務匯流排佇列或主題的高階介面。

請使用 get_<queue/topic>_sender ~azure.servicebus.ServiceBusClient 的 方法來建立 ServiceBusSender 實例。

繼承
azure.servicebus._base_handler.BaseHandler
ServiceBusSender
azure.servicebus._servicebus_sender.SenderMixin
ServiceBusSender

建構函式

ServiceBusSender(fully_qualified_namespace: str, credential: TokenCredential | AzureSasCredential | AzureNamedKeyCredential, *, queue_name: str | None = None, topic_name: str | None = None, **kwargs: Any)

參數

fully_qualified_namespace
str
必要

服務匯流排命名空間的完整主機名稱。 命名空間格式為: .servicebus.windows.net

credential
TokenCredentialAzureSasCredentialAzureNamedKeyCredential
必要

用於驗證的認證物件,會實作用於取得權杖的特定介面。 它接受 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

參數

sequence_numbers
intlist[int]
必要

排程訊息的序號。

timeout
float

作業逾時總計,以秒為單位,包括所有重試。 如果指定,此值必須大於 0。 預設值為 None,表示沒有逾時。

傳回類型

例外狀況

azure.servicebus.exceptions.ServiceBusError if messages cancellation failed due to message alreadycancelled or enqueued.

範例

取消排定在未來傳送的訊息


   with servicebus_sender:
       servicebus_sender.cancel_scheduled_messages(sequence_nums)

close

如果處理常式使用個別連接) ,請關閉處理常式連結 (和連線。

如果處理常式已經關閉,此作業將不會執行任何動作。

close() -> None

傳回類型

例外狀況

azure.servicebus.exceptions.ServiceBusError if messages cancellation failed due to message alreadycancelled or enqueued.

create_message_batch

建立 ServiceBusMessageBatch 物件,其大小上限為受max_size_in_bytes限制的所有內容。 max_size不應大於服務所定義的允許訊息大小上限。

create_message_batch(max_size_in_bytes: int | None = None) -> ServiceBusMessageBatch

參數

max_size_in_bytes
Optional[int]
預設值: None

ServiceBusMessageBatch 物件可以保存的最大位元組資料大小。 根據預設,此值取決於您的服務匯流排層。

傳回

ServiceBusMessageBatch 物件

傳回類型

例外狀況

azure.servicebus.exceptions.ServiceBusError if messages cancellation failed due to message alreadycancelled or enqueued.

範例

在有限大小內建立 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]]]
必要

要排程的訊息或訊息清單。

schedule_time_utc
datetime
必要

將訊息排入佇列的 utc 日期和時間。

timeout
float

作業逾時總計,以秒為單位,包括所有重試。 如果指定,此值必須大於 0。 預設值為 None,表示沒有逾時。

傳回

排入佇列之訊息的序號清單。

傳回類型

例外狀況

azure.servicebus.exceptions.ServiceBusError if messages cancellation failed due to message alreadycancelled or enqueued.

範例

排程未來要傳送的訊息


   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

參數

timeout
Optional[float]

作業逾時總計,以秒為單位,包括所有重試。 如果指定,此值必須大於 0。 預設值為 None,表示沒有逾時。

傳回類型

例外狀況

azure.servicebus.exceptions.OperationTimeoutError if sending times out.

範例

傳送訊息。


   with servicebus_sender:
       message_send = ServiceBusMessage("Hello World")
       servicebus_sender.send_messages(message_send)

屬性

client_identifier

取得與傳送者實例相關聯的 ServiceBusSender client_identifier。

傳回類型

str