响应式编程和REST Web服务

3
我有一个情况,一个应用程序有一个值列表,例如一本书的列表,这个列表会不时地改变。它还有一个REST端点,发布此信息。
有几个其他应用程序使用此信息,并且它们应该知道我应用程序中的任何一本书是否发生了更改。
在这种情况下,反应式风格是否足够?起初,我认为是的,基于观察者模式。但是考虑到所涉及的应用程序仅基于Web服务交换信息,这是否是一个好方法?
我还看了一下retrofit,它可以将端点转换为Java接口。但我找到的所有示例都与Android应用程序相关。
那么,在这种情况下,这种方法是否可行?如果是,有人可以推荐一本书或任何资源吗?
编辑:
既然我有一个发布书籍的端点,那么我应该将其转换为Observable,当有新的书籍可用时,通知所有订阅者此事件,并由其决定是否应该执行某些操作。
如果是这样,那么客户端(例如angularjs应用程序或另一个Java应用程序)如何订阅此observable?
希望我能让自己更加清楚。

很不清楚你是在问后端还是客户端架构。而且这些问题太过宽泛。Rx并不是关于应用程序的一般架构,它只是一个工具,可以解决特定的问题。 - eleven
也许需要在客户端和服务器之间维护一个套接字连接,这样当服务器中的数据发生变化时,所有客户端都会收到通知。我认为你实际上需要的是“类似于套接字”的东西或者确切地说就是“套接字”! - The Coder
如果您正在通过网络进行此操作,则需要考虑您的网络客户端如何对事件进行“反应”。使用“可观察流”来响应数据变化非常好,但是网络边界可能会导致问题。我认为您需要更具体 - 我猜您的服务器是Java,但是您的客户端是什么?您是否使用HTTP 1.1或者可以使用WebSockets、ServerSentEvents或HTTP2来生成数据“流”。 - Will
1个回答

0

我认为您混淆了Rx编程和网络问题。如果您的服务器在X时间间隔内通过网络发送数据,则如@TheCoder所说,您可以侦听套接字上的更改并使用PublishSubject帮助触发rx流上的事件。但我认为真正的问题在于您的服务器发送数据的方式。

如果您必须查询服务器才能知道您的书籍清单是否已更新,则在您的目标是实时更新时触发此类调用并不是非常有效。在这种类型的场景中,发布-订阅模式更加适合,其中您的客户端仅充当接收方,并且可以在服务器推送新值(例如您的新书列表)时立即更新自身。您可以找到诸如pubnubMQTT协议之类的工具来实现这些功能。

为了让您快速了解此系统的工作原理,您可以查看this


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接