acltdtUnbindQueueRoutes
acltdtDequeue
函数功能
从队列中获取数据。同步接口。
Atlas 200/500 A2推理产品,不支持该接口。
函数原型
aclError acltdtDequeue(uint32_t qid, acltdtBuf *buf, int32_t timeout)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| qid | 输入 | 需要从哪个队列中获取数据。 队列需提前调用acltdtCreateQueue接口创建。 |
| buf | 输出 | 共享Buffer指针。 |
| timeout | 输入 | 等待超时时间。当队列空时,如果从队列中获取数据,系统内部会根据设置的等待超时时间来决定如何处理。 该参数取值范围如下: - -1:阻塞方式,一直等待直到队列有数据后返回。 - 0:非阻塞方式,当队列空时,直接返回队列空这个错误,这时由用户自行设定重试间隔。 - >0:配置具体的超时时间,单位为毫秒。队列空时,等待达到超时时间后返回报错。超时时间受操作系统影响,一般偏差在操作系统的一个时间片内,例如,操作系统的一个时间片为4ms,用户设置的超时时间为1ms,则实际的超时时间在1ms到5ms范围内。在CPU负载高场景下,超时时间仍可能存在波动。 |
返回值说明
返回0表示成功,返回其它值表示失败。
父主题: 共享队列管理
acltdtBindQueueRoutes
函数功能
当应用存在数据一对多分发时,通过本接口绑定队列间数据转发路由关系。同步接口。
如下图所示,可以建立两条路由关系Q1->Q2, Q1->Q3。
约束说明
- 数据一对多分发时,传递的共享Buffer数据是无锁的,消费者不能对数据进行inplace操作,如上图所示消费者1对共享数据的修改会导致消费者2访问的数据发生变化。
- 会对添加的队列路由关系的进行是否成环校验,不允许成环。
- 不支持多线程并发调用。
函数原型
aclError acltdtBindQueueRoutes(acltdtQueueRouteList *qRouteList)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| qRouteList | 输入/输出 | 路由关系数组的指针,接口调用完成后返回路由绑定结果。 需提前调用acltdtCreateQueueRouteList接口创建acltdtQueueRouteList类型的数据,再调用acltdtAddQueueRoute接口添加路由关系。 |
返回值说明
返回0表示成功,返回其它值表示失败。
只有当所有队列关系绑定成功且路由状态正常时,本接口才会返回成功;任何一条绑定失败,本接口返回失败,如果您需要知道具体哪个路由关系绑定失败,您可以先调用acltdtGetQueueRoute接口从路由关系数组中获取每一个路由关系,再调用acltdtGetQueueRouteParam接口查询绑定关系状态。
父主题: 共享队列管理
acltdtUnbindQueueRoutes
函数功能
解绑定数据队列路由关系。同步接口。
函数原型
aclError acltdtUnbindQueueRoutes(acltdtQueueRouteList *qRouteList)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| qRouteList | 输入/输出 | 路由关系数组的指针,接口调用完成后返回路由去绑定结果。 可先通过acltdtQueryQueueRoutes获取路由关系数组。 |
返回值说明
返回0表示成功,返回其它值表示失败。
只有当所有队列关系解绑定成功,本接口才会返回成功;任何一条解绑定失败,本接口返回失败,如果您需要知道具体哪个路由关系解绑定失败,您可以先调用acltdtGetQueueRoute接口从路由关系数组中获取每一个路由关系,再调用acltdtGetQueueRouteParam接口查询绑定关系状态。
父主题: 共享队列管理
acltdtQueryQueueRoutes
函数功能
根据指定条件查询数据队列路由关系。同步接口。
函数原型
**aclError**acltdtQueryQueueRoutes(const acltdtQueueRouteQueryInfo *queryInfo, acltdtQueueRouteList *qRouteList)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| queryInfo | 输入 | 查询条件的指针。 需提前调用acltdtCreateQueueRouteQueryInfo接口创建acltdtQueueRouteQueryInfo类型的数据。 |
| qRouteList | 输入&输出 | 路由关系数组的指针。 需提前调用acltdtCreateQueueRouteList接口创建acltdtQueueRouteList类型的数据。 |
返回值说明
返回0表示成功,返回其它值表示失败。
父主题: 共享队列管理
acltdtGrantQueue
函数功能
进程间需要共享队列信息时,可以调用本接口给其它进程授予队列相关的权限,例如Enqueue(指向队列中添加数据)权限、Dequeue(指从队列中获取数据)权限等。同步接口。
Atlas 200/500 A2推理产品,不支持该接口。
约束说明
进程间传递队列相关信息时,安全性由用户保证。
函数原型
aclError acltdtGrantQueue(uint32_t qid, int32_t pid, uint32_t permission, int32_t timeout)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| qid | 输入 | 队列ID。 |
| pid | 输入 | 被授权进程的ID。 |
| permission | 输入 | 权限标识(队列生产者/消费者)。 用户选择如下多个宏进行逻辑或(例如:ACL_TDT_QUEUE_PERMISSION_DEQUEUE | ACL_TDT_QUEUE_PERMISSION_ENQUEUE),作为permission参数值。每个宏表示某一权限,详细说明如下: - ACL_TDT_QUEUE_PERMISSION_DEQUEUE:表示Dequeue权限。 - ACL_TDT_QUEUE_PERMISSION_ENQUEUE:表示Enqueue权限。 |
| timeout | 输入 | 等待超时时间,取值范围如下: - -1:阻塞方式,一直等待直到数据成功加入队列。 - 0:非阻塞方式,立即返回。 - >0:配置具体的超时时间,单位为毫秒,等到到达超时时间后返回报错。超时时间受操作系统影响,一般偏差在操作系统的一个时间片内,例如,操作系统的一个时间片为4ms,用户设置的超时时间为1ms,则实际的超时时间在1ms到5ms范围内。在CPU负载高场景下,超时时间仍可能存在波动。 |
返回值说明
返回0表示成功,返回其它值表示失败。
父主题: 共享队列管理
在线提单