你当前正在访问 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.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 标识库生成的凭据对象,以及实现 *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
参数
- timeout
- float
总操作超时时间(秒)包括所有重试次数。 如果指定,该值必须大于 0。 默认值为 None,表示无超时。
返回类型
例外
示例
取消计划将来发送的消息
with servicebus_sender:
servicebus_sender.cancel_scheduled_messages(sequence_nums)
close
如果处理程序使用单独的连接) ,请关闭处理程序链接 (和连接。
如果处理程序已关闭,此操作将不执行任何操作。
close() -> None
返回类型
例外
create_message_batch
使用受max_size_in_bytes约束的所有内容的最大大小创建 ServiceBusMessageBatch 对象。 max_size不应大于服务定义的最大允许消息大小。
create_message_batch(max_size_in_bytes: int | None = None) -> 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)