你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

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 标识库生成的凭据对象,以及实现 *get_token (self、 scopes) 方法的对象,或者也可以提供 AzureSasCredential。

queue_name
str

客户端连接到的特定服务总线队列的路径。

topic_name
str

客户端连接到的特定服务总线主题的路径。

logging_enable
bool

是否将网络跟踪日志输出到记录器。 默认值为 False。

transport_type
TransportType

将用于与服务总线服务通信的传输协议的类型。 默认值为 TransportType.Amqp

http_proxy
Dict

HTTP 代理设置。 这必须是具有以下键的字典: “proxy_hostname” (str 值) 和 “proxy_port” (int 值) 。 此外,还可能存在以下密钥:“username”、“password”。

user_agent
str

如果指定,则会将其添加到内置用户代理字符串的前面。

client_identifier
str

用于唯一标识客户端实例的基于字符串的标识符。 服务总线会将其与一些错误消息相关联,以便更轻松地关联错误。 如果未指定,将生成唯一 ID。

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

使用受max_size_in_bytes约束的所有内容的最大大小创建 ServiceBusMessageBatch 对象。 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

使用受max_size_in_bytes约束的所有内容的最大大小创建 ServiceBusMessageBatch 对象。 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