首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >推荐的服务器端web服务异步模式

推荐的服务器端web服务异步模式
EN

Stack Overflow用户
提问于 2013-03-15 15:13:13
回答 1查看 622关注 0票数 0

我已经成功地实现了轮询和回调客户端端异步示例,但现在我感兴趣的是使用服务器端异步实现web服务。基础设施是Java,使用JBoss作为6.x。

我正在尝试实现的模式(据我理解)将涉及两个web服务操作,一个用于启动请求,另一个用于检查请求是否已完成并检索结果。

  1. 客户端通过SOAP调用带有搜索参数的web服务端点操作1。
  2. Web服务端点通过JMS队列1将请求发送到消息驱动的bean。
  3. 消息驱动bean (,MDB)从队列1接收请求。
  4. MDB通过向web服务端点发送包含JMS队列2的相关器ID的消息来确认服务请求。(我假设这个相关器ID将是生成的JMS消息id。)
  5. MDB确认原始消息以将其从队列1中删除。
  6. MDB开始长时间运行的数据库查询,可能是使用相关器ID作为检索键构建临时表的结果。
  7. Web服务端点通过SOAP向客户端发送包含相关器ID的回复。

我猜想,由于获取结果不需要很长时间的查询,所以我不需要JMS,我可以简单地查询数据库以查看结果是否已经准备好。因此,第二项行动是:

  1. 客户端通过SOAP使用相关器ID调用web服务端点操作2。
  2. Web服务查询数据库使用相关器ID。结果代码将是:未找到结果,操作仍在进行中,或发现结果。
  3. Web服务以某种复杂的结构响应客户端,将结果代码与任何结果结合在一起。

所以,我有很多问题。我看到了一些对服务器端异步支持的引用,但它们在某种程度上似乎都是特定于服务器的。例如,我看到了一个精确描述第一个操作的图表,但它似乎是特定于OC4J的。如果有人可以向我介绍一个通用示例或教程实现类似的东西,请这样做。其他的子属性可能是,我应该使用JMS消息ID作为相关器返回到客户端吗?我假设我应该使用客户端确认作为JMS会话模式,这样MDB就可以向web服务发送一个回复,然后从队列中删除消息。或者,我应该麻烦一下吗?web服务端点是否应该生成JMS消息,将其弹出到队列中,并直接将消息ID返回给服务客户端,而不需要遍历MDB通过JMS队列2发送回相关器的所有繁琐操作?编辑:实际上,我越考虑这个问题,web服务发送消息的想法似乎就错了,然后,什么,阻止等待队列2上的回复?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-15 16:42:53

相关id可以在步骤2中生成并立即返回给客户端。这在响应客户端之前减少了额外的跳数。在队列中生成持久消息就足够了。我也不认为需要两个队列。我更喜欢应用程序生成的相关id。

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

https://stackoverflow.com/questions/15435872

复制
相关文章

相似问题

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