何时使用JMS,何时使用REST? 除了一个特殊问题的异步/同步性质外,考虑到MOMS(在这种情况下选择了JMS)提供了免费的负载平衡和其他的附加特性,在选择JMS而不是REST或反之亦然时还能考虑什么?

何时使用JMS,何时使用REST? 除了一个特殊问题的异步/同步性质外,考虑到MOMS(在这种情况下选择了JMS)提供了免费的负载平衡和其他的附加特性,在选择JMS而不是REST或反之亦然时还能考虑什么?,rest,asynchronous,jms,integration,synchronous,Rest,Asynchronous,Jms,Integration,Synchronous,谢谢您无法比较这两种技术 REST是一种服务/模式,为您提供一种有组织的方式来访问无状态资源 momsystems/JMS是一种围绕系统间共享消息而设计的模式。它是关于以可靠的方式输入和输出数据 您无法真正将JMS与REST进行比较,因为它们解决不同的问题 但如果您的问题更接近于我的JMS队列是否需要REST接口?在所有情况下,我都看到人们使用REST保护瘦客户机不受JMS中消息队列所需的逻辑的影响。例如,如果您有一个android客户端想要与JMS对话,那么与将消息推送到“rest”接口(

谢谢

您无法比较这两种技术

REST是一种服务/模式,为您提供一种有组织的方式来访问无状态资源

momsystems/JMS是一种围绕系统间共享消息而设计的模式。它是关于以可靠的方式输入和输出数据


您无法真正将JMS与REST进行比较,因为它们解决不同的问题



但如果您的问题更接近于我的JMS队列是否需要REST接口?在所有情况下,我都看到人们使用REST保护瘦客户机不受JMS中消息队列所需的逻辑的影响。例如,如果您有一个android客户端想要与JMS对话,那么与将消息推送到“rest”接口(该接口随后可以翻译并推送到JMS)相比,这要困难得多。

始终使用rest。它是当今可用的最现代、最先进和可扩展的集成方法。负载平衡基于REST的服务只需使用硬件或软件HTTP负载平衡器即可实现,并且可以认为与JMS中的负载平衡一样免费

妈妈不容易扩展(但可以扩展到足以满足您的需要)。REST在web级别工作

妈妈没有。对于数据检索请求,每次请求特定数据时,必须向服务器发送另一条消息并由服务器响应。在基于REST的系统中,对相同数据的请求可以由一个。这意味着,随着请求量的增加,基于MOM的系统将看到服务器负载以与请求相同的速度增加。基于REST的系统将看到服务器负载以比请求慢的速度增加

妈妈会用火来诱惑你们,用保证传递的方式来忘记信息,只会用嘴咬你们

MOM对于同步请求-应答非常糟糕,因为当服务器关闭时,它会缓慢失败(即等待超时)。当请求将要失败时,您希望它快速失败。如果服务器关闭,对基于REST的服务的HTTP请求将立即失败(在TCP连接上)

MOM对于异步请求-应答消息传递非常有用,但是接下来您将面临在请求和应答之间的何处存储状态的问题(提示:您的选项是、或)。通常情况下,额外的实现工作并不值得异步性带来的明显优势。如果您确实需要,基于REST的服务也支持异步请求。在这种情况下,你的朋友是谁

最后,缓存的使用允许基于REST的系统实现更容易支持的基于拉的集成。例如,假设我们希望将数据从系统A移动到系统B。MOM方法是将消息从A发送到B。基于REST的方法是在A中创建一个数据提要服务(如RSS提要),B轮询新数据(与RSS阅读器轮询新文章的方式相同)。在MOM示例中,当B失败时,支持团队将需要监视消息队列,以确保它们不会溢出,而其他人会备份B。在剩下的例子中,支持团队只需要担心B的恢复。当a失败时,没有多大区别。在妈妈的例子中,B不知道也不在乎。在剩下的例子中,B确实知道A停机了,但它仍然不在乎,因为很明显,A停机时没有新数据。最初,基于拉式集成的轮询需要非常低效的seams,但是HTTP缓存使这成为一个问题


换句话说,与其投资JMS服务器,不如投资一个好的缓存HTTP负载平衡器。

这是两种不同的技术和模式。。。。因此,你的问题毫无意义。@Nix别那么学究气。从应用集成的角度来看,考虑基于REST的方法或基于MOM的方法是完全有效的。如果有什么不同的话,我很惊讶SOAP服务没有被考虑到。@Nix我可以通过使用任何一种技术来实现相同的集成,因此这个问题是完全正确的。事实上,这是一个很好的问题。我认为这是一个建设性的问题,很好,应该重新讨论。它有两个答案,一个是30票以上,问题本身有20票以上——这对我来说很有建设性。你可以使用REST在系统之间可靠地共享数据。Atom提要就是一个很好的例子。我不是说你不能。这就是REST的全部目的。“MOM Sysems/JMS是一种围绕系统间共享消息而设计的模式。”我要说的是REST在这方面非常出色。在我看来,您可以非常轻松地将JMS与REST进行比较,因为它们都希望解决应用程序集成问题。您是否有一个使用JMS比RESTful方法更好地解决问题的例子?@Tom Howard您有一个将消息推送到JMS的传感器池,以及一个处理这些消息的消费者池。您希望每个消息只处理一次。您无法分割消息流,使每个片段接收的消息数量大致相同,也无法判断处理哪个消息需要多少时间。您完全可以单独使用REST端点来解决这个问题,但使用JMS更容易。@Tom Howard,但所有消费者都应该定期轮询您的归档提要,生成无用的流量,JMS咨询者可以被唤醒以处理新消息。这还取决于您的客户端技术,基于web的客户端或具有本地对象图存储的富客户端+1:“总是休息”是个糟糕的回答。当然,在许多有效的情况下,REST是更合适的选择,但是