首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring Web服务- Web服务通信

Spring Web服务- Web服务通信
EN

Stack Overflow用户
提问于 2012-11-23 16:07:21
回答 1查看 254关注 0票数 0

今天我有一个理论上的问题(我只是找不到一种方法来编写示例代码)。

我的系统架构是这样的:Client <--> Web Service1 <--> query <--> Web Service2 <--> Server

我不能更改它,因为我的公司需要它是独立的。

问题出在同步上当clientWebService1发送请求时,WS1将一个对象放入查询中,WS2一直在监视查询并检查是否有新的东西,如果是,它会向Server发送一个请求,后者处理该请求并给出一个适当的响应,该响应必须返回给Client

对于所有请求,Server的处理时间并不相等。我必须从客户端获得请求,并在一个会话中发送一个请求。Thread.sleep或任何一种停止执行代码的方法都是不可接受的。

有没有人能给我一个提示,我应该用什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-23 20:36:36

好吧,让我们忘记队列和服务器之间的通信。

  1. 客户端通过WS1 (同步com)向服务器1发送请求。服务器1中的
  2. 进程写入队列。服务器1中的
  3. 进程等待来自队列的应答。在这一点上,我担心,由于与客户端的通信是同步的,客户端应该等待。如何解决?Thread.sleep是一种解决方案。

客户端应该等待多长时间?这取决于:

服务器2中的

  • 频率进程读取到服务器1的队列
  • Time通过WS2
  • Time到服务器1呼叫服务器处理服务器1中的

进程读取队列寻找来自服务器2的应答

所以,你可以使用一个循环:

  1. 询问队列中的答案
  2. 如果答案在那里,很好,你可以回复客户。如果不是,线程必须等待。循环再次开始。

但是,你不能让客户端等待太久,你可以这样做:

  1. 是否知道等待的时间超过了最长时间?如果是,就中断循环,告诉客户端出了问题。
  2. 向队列询问答案
  3. 如果答案在那里,你就会回复客户端。如果不是,线程必须等待。循环再次开始。

我认为你应该重新考虑停止代码执行,因为在你从队列中得到答案之前,没有代码可以执行。无论如何,请参阅此question以了解线程睡眠替代方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13525122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档