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

SendClient 类

用于发送消息的 AMQP 客户端。

继承
SendClient

构造函数

SendClient(target, auth=None, client_name=None, debug=False, msg_timeout=0, error_policy=None, keep_alive_interval=None, **kwargs)

参数

target
str, bytesTarget
必需

目标 AMQP 服务终结点。 这可以是字符串或 ~uamqp.address.Target 对象的 URI。

auth
AMQPAuth
默认值: None

连接的身份验证。 这应该是 uamqp.authentication.AMQPAuth 的子类之一。 目前,这包括:

  • uamqp.authentication.SASLAnonymous

  • uamqp.authentication.SASLPlain

  • uamqp.authentication.SASTokenAuth

  • uamqp.authentication.JWTTokenAuth

如果未提供身份验证,则默认使用 SASLAnnoymous。

client_name
strbytes
默认值: None

客户端的名称,也称为容器 ID。 如果未提供名称,则将使用随机 GUID。

debug
bool
默认值: False

是否打开网络跟踪日志。 如果 为 True,则会在 INFO 级别记录跟踪日志。 默认值为 False。

msg_timeout
int
默认值: 0

从消息添加到发送队列到实际发送消息时的消息超时(以毫秒为单位)。 这可以防止发送可能过期的数据。 如果设置为 0,则消息不会过期。 默认为 0。

error_policy
ErrorPolicy
默认值: None

一种策略,用于分析链接、连接和消息处置上的错误,以确定错误是否应可重试。

keep_alive_interval
int
默认值: None

如果设置,将启动一个线程,以在用户不活动期间使连接保持活动状态。 该值将确定线程在 ping 连接之间) (休眠的时间(以秒为单位)。 如果为 0 或 None,则不会启动任何线程。

send_settle_mode
SenderSettleMode
必需

用于确定消息发送操作的模式。 如果设置为 Unsettled,则客户端将等待服务确认消息已成功发送。 如果设置为“Settled”,则客户端不会等待确认并假定成功。

receive_settle_mode
ReceiverSettleMode
必需

用于确定消息接收操作的模式。 如果设置为 “PeekLock”,接收方会在收到消息后锁定消息,直到客户端接受或拒绝该消息。 如果设置为 ReceiveAndDelete,则服务将假定成功接收消息并将其从队列中清除。 默认值为 PeekLock

desired_capabilities
AMQPValue
必需

对等终结点所需的扩展功能。 若要创建desired_capabilities对象,请执行以下操作:

    1. 创建所需功能符号的数组: capabilities_symbol_array = [types。AMQPSymbol (字符串) ]
    1. 将数组转换为 AMQPValue 对象: utils.data_factory (类型。AMQPArray (capabilities_symbol_array) )
max_message_size
int
必需

为链接协商的最大允许消息大小。

link_properties
dict
必需

将在链接附加框架中发送的元数据。

link_credit
int
必需

发件人链接信用额度,用于确定每个连接迭代链接将尝试处理多少条消息。

max_frame_size
int
必需

最大 AMQP 帧大小。 默认值为 63488 字节。

channel_max
int
必需

连接中会话通道的最大数目。

idle_timeout
int
必需

超时(以毫秒为单位),如果没有进一步的活动,连接将关闭。

properties
dict
必需

连接属性。

remote_idle_timeout_empty_frame_send_ratio
float
必需

无活动的连接的空帧与空闲时间的比率。 值必须介于 0.0 和 1.0(含)之间。 默认值为 0.5。

incoming_window
int
必需

传入消息的允许窗口大小。

outgoing_window
int
必需

传出消息允许的窗口大小。

handle_max
int
必需

并发链接句柄的最大数目。

on_attach
<xref:func>[Source, Target, dict, AMQPConnectionError]
必需

接收 ATTACH 帧时要运行的回调函数。 该函数必须采用 4 个参数:源、目标、属性和错误。

encoding
str
必需

要用于作为字符串提供的参数的编码。 默认值为“UTF-8”

方法

auth_complete

身份验证握手是否在连接初始化期间完成。

client_ready

处理程序是否已完成所有启动进程(例如建立连接、会话、链接和身份验证),并且尚未准备好处理消息。

close

关闭客户端。 这包括关闭会话和 CBS 身份验证层以及连接。 如果客户端是使用外部连接打开的,则会保持不变。

无法发送或接收其他消息,并且无法重新打开客户端。

所有待处理、未发送的消息将保持不清楚状态,以允许它们被检查并排入队列到新客户端。

do_work

运行单个连接迭代。 如果连接仍处于打开状态并准备用于进一步工作,则返回 True ;如果需要关闭连接,则返回 False

messages_pending

检查客户端是否在队列中保存任何未发送的消息。

mgmt_request

运行请求/响应操作。 这些常用于针对$management节点的管理任务,但可以指定任何节点名称,可用选项将取决于目标服务。

open

打开客户端。 客户端可以创建新的连接,也可以传入现有的连接。 此现有连接可能具有现有的 CBS 身份验证会话,该会话也将用于此客户端。 否则,将创建新的会话。

queue_message

将一个或多个消息添加到发送队列。 在调用 SendClient.wait () SendClient.send_all_messages () 之前,不会执行进一步操作。 尚未打开客户端,就可以将消息添加到队列。 可以同时将多个消息排队:

  • send_client.queue_message (my_message)

  • send_client.queue_message (message_1、message_2、message_3)

  • *send_client.queue_message (my_message_list)

redirect

使用链接 DETACH 重定向响应重定向客户端终结点。

send_all_messages

发送队列中所有挂起的消息。 这将返回所有挂起消息的发送结果列表,以便确定是否有任何消息未能发送。 如果客户端尚未打开,此函数将打开它。

send_message

发送单个消息或批处理消息。

wait

运行客户端,直到队列中的所有挂起消息都已处理。 返回在处理消息后客户端是否仍在运行,或者是否已启动关闭。

auth_complete

身份验证握手是否在连接初始化期间完成。

auth_complete()

返回类型

client_ready

处理程序是否已完成所有启动进程(例如建立连接、会话、链接和身份验证),并且尚未准备好处理消息。

client_ready()

返回类型

close

关闭客户端。 这包括关闭会话和 CBS 身份验证层以及连接。 如果客户端是使用外部连接打开的,则会保持不变。

无法发送或接收其他消息,并且无法重新打开客户端。

所有待处理、未发送的消息将保持不清楚状态,以允许它们被检查并排入队列到新客户端。

close()

do_work

运行单个连接迭代。 如果连接仍处于打开状态并准备用于进一步工作,则返回 True ;如果需要关闭连接,则返回 False

do_work(**kwargs)

返回类型

例外

TimeoutError or uamqp.errors.ClientTimeout if CBS authentication timeout reached.

messages_pending

检查客户端是否在队列中保存任何未发送的消息。

messages_pending()

返回类型

mgmt_request

运行请求/响应操作。 这些常用于针对$management节点的管理任务,但可以指定任何节点名称,可用选项将取决于目标服务。

mgmt_request(message, operation, op_type=None, node=None, callback=None, **kwargs)

参数

message
Message
必需

在管理请求中发送的消息。

operation
bytes
必需

要执行的操作的类型。 此值将特定于服务,但常见值包括 READ、CREATE 和 UPDATE。 此值将作为应用程序属性添加到消息中。

op_type
bytes
默认值: None

要对其执行操作的类型。 这将特定于服务的实体。 此值将作为应用程序属性添加到消息中。

node
bytes
默认值: None

目标节点。 默认值为 b“$management”。

timeout
float
必需

提供一个可选的超时(以毫秒为单位),在此超时时间内必须接收对管理请求的响应。

callback
callable[int, bytes, Message]
默认值: None

用于处理管理请求返回的参数的函数,包括状态代码和说明(如果可用)。 这可用于重新设置响应格式或根据内容引发错误。 该函数必须采用 3 个参数 - 状态代码、响应消息和说明。

status_code_field
bytes
必需

在响应正文中为状态代码提供备用名称,由于规范仍在草稿中,服务之间可能会有所不同。 默认值为 b“statusCode”。

description_fields
bytes
必需

为响应正文中的说明提供备用名称,由于规范仍在草稿中,服务之间可能会有所不同。 默认值为 b“statusDescription”。

返回类型

open

打开客户端。 客户端可以创建新的连接,也可以传入现有的连接。 此现有连接可能具有现有的 CBS 身份验证会话,该会话也将用于此客户端。 否则,将创建新的会话。

open(connection=None)

参数

connection
默认值: None

可在多个客户端之间共享的现有连接。

queue_message

将一个或多个消息添加到发送队列。 在调用 SendClient.wait () SendClient.send_all_messages () 之前,不会执行进一步操作。 尚未打开客户端,就可以将消息添加到队列。 可以同时将多个消息排队:

  • send_client.queue_message (my_message)

  • send_client.queue_message (message_1、message_2、message_3)

  • *send_client.queue_message (my_message_list)

queue_message(*messages)

参数

messages
必需

要发送的消息。 这可以是 Message 的单个实例,也可以是 BatchMessage 实例中包装的多个消息。

redirect

使用链接 DETACH 重定向响应重定向客户端终结点。

redirect(redirect, auth)

参数

redirect
LinkRedirect
必需

链接分离重定向详细信息。

auth
AMQPAuth
必需

重定向终结点的身份验证凭据。

send_all_messages

发送队列中所有挂起的消息。 这将返回所有挂起消息的发送结果列表,以便确定是否有任何消息未能发送。 如果客户端尚未打开,此函数将打开它。

send_all_messages(close_on_done=True)

参数

close_on_done
bool
默认值: True

发送消息后关闭客户端。 默认值为 True。

返回类型

send_message

发送单个消息或批处理消息。

send_message(messages, close_on_done=False)

参数

messages
必需

要发送的消息。 这可以是 Message 的单个实例,也可以是 BatchMessage 实例中包装的多个消息。

close_on_done
bool
默认值: False

发送消息后关闭客户端。 默认值为 False。

例外

uamqp.errors.MessageException if message fails to send after retry policyis exhausted.

wait

运行客户端,直到队列中的所有挂起消息都已处理。 返回在处理消息后客户端是否仍在运行,或者是否已启动关闭。

wait()

返回类型

属性

pending_messages