![]() |
1
292
使用Web服务时,您有一个客户端和一个服务器:
当您使用诸如rabbitmq、beanstalkd、activemq、ibm mq series、tuxe之类的消息队列时,您是否希望得到不同且更具容错性的结果:
消息队列有很多特性,但这是一个经验法则,可以用来决定是要自己处理错误条件,还是让它们留在消息队列中。 |
![]() |
2
72
最近有大量的研究在考虑rest http调用如何取代消息队列概念。 如果将流程和任务的概念作为资源引入,则对中间消息传递层的需求开始消失。 前任:
一个任务可以有多个初始化步骤,一个进程可以在轮询时返回状态,或者在完成时发送到回调url。 这非常简单,当您意识到您现在可以订阅所有正在运行的进程和任务的rss/atom提要而无需任何中间层时,它就变得非常强大。不管怎样,任何排队系统都需要某种Web前端,这个概念使它不需要另一层自定义代码就可以构建起来。 您的资源一直存在,直到您删除它们,这意味着您可以在流程和任务完成后很长时间内查看历史信息。 您已经内置了服务发现功能,即使对于一个包含多个步骤的任务,也没有任何额外的复杂协议。
您的服务发现是一个HTML表单-一种通用的、人类可读的格式。 整个流程可以通过编程方式使用,也可以由人使用普遍接受的工具使用。它是客户端驱动的,因此是restful。为web创建的每个工具都可以驱动您的业务流程。通过异步发布到单独的日志服务器阵列,您仍然有备用的消息通道。 经过一段时间的考虑之后,您可以坐下来开始意识到rest可能会完全消除对消息队列和esb的需求。 |
![]() |
3
31
消息队列是处理可能需要很长时间的请求的理想选择。请求是排队的,可以脱机处理而不阻塞客户端。如果需要通知客户机完成,您可以提供一种方法,让客户机定期检查请求的状态。 消息队列还允许您更好地跨时间扩展。它提高了处理大量活动的能力,因为实际的处理可以跨时间分布。 注意,消息队列和web服务是正交的概念,即它们不是互斥的。例如,您可以拥有一个基于xml的web服务,它充当消息队列的接口。我认为您要寻找的区别是消息队列与请求/响应,后者是在同步处理请求时。 |
![]() |
4
23
消息队列是异步的,如果传递失败,可以重试多次。如果请求者不需要等待响应,请使用消息队列。 “web服务”这个短语让我想到了通过http对分布式组件的同步调用。如果请求者需要返回响应,请使用web服务。 |
![]() |
5
22
我认为,一般来说,您需要一个web服务来执行一个阻塞任务(在执行更多代码之前需要完成这些任务),以及一个消息队列来执行一个非阻塞任务(可能需要很长时间,但我们不需要等待)。 |
![]() |
user755806 · 从Rest服务返回JSON响应? 6 年前 |