0

所以我目前正在使用 ZenDesk API。我正在使用批处理 CreateUser 方法创建许多用户,该方法采用最多 100 个用户对象的数组。现在,由于某种原因,一些用户无法生成。因此,我想在创建用户后获取 JobStatus 的结果,以便我可以轻松识别问题。问题是执行 CreateUsers() 方法后结果变量为空。

一些示例代码:

public static void createEndUsers(Zendesk zd){      
    for(Organization org : zd.getOrganizations()){
        List<User> usersList = getUsersPerOrg(org, 0)
        JobStatus js = zd.createUsers(usersList);

        List<T> resultElements = js.getResults(); 
    }
}

为什么 getResults() 在这种情况下返回 null?是不是因为到达那部分代码时操作还没有执行?在我尝试访问它之前,如何确保我“等待”到结果准备好?

4

1 回答 1

0

如果您查看可能的值,org.zendesk.client.v2.model.JobStatus.JobStatusEnum您会注意到作业可能正在排队等待执行,或者在操作返回作业状态时它可能仍在运行org.zendesk.client.v2.Zendesk#createUsers(org.zendesk.client.v2.model.User...)

Zendesk 文档中可以看出 createUsers 操作

此端点返回一个 job_status JSON 对象并将后台作业排队以完成工作。使用 Show Job Status 端点检查作业是否完成。

只有当作业完成时,才会有相应的结果交付给操作。

在您的情况下,一个可能的解决方案是每 500 毫秒检查一次(可能在单独的线程中)作业状态是否未排队或未运行(否则表示它是否已完成)以及它是否成功完成以检索结果。

于 2017-03-04T23:45:32.637 回答