3

我在 Axis2 中设置了一个 Web 服务,它的工作是获取一堆 XML 并将其放入队列中以供稍后处理。我知道可以通过在“调用”实例上创建使用“invokeNonBlocking”操作来设置客户端以异步调用同步 Web 服务。(参考http://onjava.com/pub/a/onjava/2005/07/27/axis2.html?page=4

所以,我的问题是,在这种情况下使用异步 Web 服务有什么好处吗?这似乎是多余的,因为 1)客户端没有被阻塞,2)服务必须接受 xml 并将其写入队列,无论它是同步的还是异步的

4

3 回答 3

1

在我看来,异步是合适的方法。有几点需要考虑:

  1. 您是否有多个客户在任何特定时刻访问此服务?
  2. 这个过程多久发生一次?

实现异步方法确实需要更多的努力。但我保证,最终你会对结果更满意。一方面,您不必管理线程。您主要关心的可能只是队列中数据的波动性(即竞争/死锁条件)。

于 2010-01-31T06:51:06.583 回答
0

我同意,“同步呼叫”似乎是合适的。

如果来自客户端的请求不耗时,那么我也看不到使调用异步的优势。根据我对此处问题情况的了解,Web 服务将在未来某个时间针对请求执行其“处理”。

相反,如果请求需要一个耗时的过程,那么异步调用将是合适的。

于 2010-01-20T22:53:39.913 回答
0

在反复思考之后,我认为该服务应该是异步的。原因是它将数据写入队列的任务放在一个单独的线程中,从而减少了超时的机会。它使过程更加复杂,但是如果我可以避免超时,那么就必须完成。

于 2010-01-21T17:40:28.737 回答