【问题标题】:Tracking results of Async callbacks in JavaJava 中异步回调的跟踪结果
【发布时间】:2015-01-27 07:09:08
【问题描述】:

我正在创建一个循环调用 API 的 REST API。像这样的:

        @RequestMapping(value = "/sendmessages", method = RequestMethod.POST)
            public ResponseEntity<String> sendMessage(ModelMap model,
                    HttpServletRequest req, HttpServletResponse res,
                    @RequestBody String requestBody) throws JSONException,
                    Exception {

        JSONObject jsonObject = new JSONObject(requestBody);
        JSONArray userIdArray = jsonObject.getJSONArray(ChatConstants.USER_IDS);

        for (int i = 0; i < userIdArray.length(); ++i) {

        pubnub.publish(SERVER, messageObject, new Callback() {

                        @Override
                        public void successCallback(String arg0, Object arg1) {
                            System.out.println(arg0);
                            System.out.println(arg1);

                        }

                        @Override
                        public void errorCallback(String arg0, PubnubError arg1) {
                            super.errorCallback(arg0, arg1);

                            System.out.println(arg0);
                            System.out.println(arg1);
                        }
                    });

        } 

    return new ResponseEntity<String>(HttpStatus.OK);
}

我正在进行一个 PubNub 调用,它是一个异步调用,结果在回调中返回。我想在我的 API 调用中返回这些异步调用的输出。任何想法,我如何跟踪这些调用的结果?

【问题讨论】:

  • 要求此 API 的调用者将回调对象传递给您,因此一旦您的工作完成,您只需使用成功和错误 API 回复调用者即可。

标签: java spring asynchronous pubnub


【解决方案1】:

我将介绍一种基于 2 种方法的解决方案。您已经有了 sendMessage(),还需要一个 checkMessageResult()。

在回调中,您可以将结果存储在某处(例如,存储在会话中的地图中)或“全局”地图中。

每次调用 send 消息都会返回一些 sendRequestId。然后客户端会不时检查通过 sentRequestId 的请求的状态。调用回调时,结果存储在地图 Map 中。 checkMessageResult() 只是通过 sentRequestId 从地图中返回内容。

【讨论】:

  • 谢谢。如果你能分享一些显示这种模式的 sn-p/link,那就太好了
  • 不幸的是我没有这个方法的例子(
猜你喜欢
  • 1970-01-01
  • 2014-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-02
  • 1970-01-01
  • 2018-09-01
  • 2016-12-28
  • 2018-04-22
相关资源
最近更新 更多