Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 每秒钟调度一次Get Api调用与执行订户Api之间有什么区别?_Java_Scheduler_Publish Subscribe - Fatal编程技术网

Java 每秒钟调度一次Get Api调用与执行订户Api之间有什么区别?

Java 每秒钟调度一次Get Api调用与执行订户Api之间有什么区别?,java,scheduler,publish-subscribe,Java,Scheduler,Publish Subscribe,我正在编写一个Java应用程序,当数据更改时,图像应该更改 我的同事要求我做一个调度程序,你必须每1秒调用一个GETAPI 我的建议是使用Pub-Sub,这样每当事件发生时,只更改数据 订阅服务器和计划程序是同一个吗 没有代码这不一样: 调度器是指当您明确选择何时发出请求时。你可以每一秒、每一分钟或任何时间去做。每次创建新请求时 发布订阅是指创建到事件源的permatent连接,并在发布事件时使用它。这里没有多个请求,而是一个套接字连接 从理论上讲,发布/订阅是一个更好的选择 区别在于: 轮

我正在编写一个Java应用程序,当数据更改时,图像应该更改

我的同事要求我做一个调度程序,你必须每1秒调用一个GETAPI

我的建议是使用Pub-Sub,这样每当事件发生时,只更改数据

订阅服务器和计划程序是同一个吗

没有代码

这不一样:

  • 调度器是指当您明确选择何时发出请求时。你可以每一秒、每一分钟或任何时间去做。每次创建新请求时
  • 发布订阅是指创建到事件源的permatent连接,并在发布事件时使用它。这里没有多个请求,而是一个套接字连接

  • 从理论上讲,发布/订阅是一个更好的选择

    区别在于:

    • 轮询是一种繁忙的等待,多个客户端会导致多余的网络流量。客户端处于活动状态
    • 发布/订阅需要一个活动服务器,该服务器向所有订阅者发送推送通知。同时,在HTML5/JavaScript和java中有足够的支持。服务器处于活动状态
    不幸的是,发布/订阅可能更难实现。最好是在单独的应用程序中进行概念验证。异步Ajax之类的东西可能会出现

    另外,一些发布/订阅库可能仍然在客户端使用后台轮询,而不是推送通知

    因此,同事们的建议可能基于更简单、无问题的实现


    根据给定的回旋余地,并且出于架构研究的兴趣:对两种实现进行负载测试的原型就可以了。希望永存。

    当使用
    GET
    请求时,您每秒轮询一次数据,并验证数据是否已更改。使用“发布/订阅”时,您只会在数据更改时收到通知(您不需要手动检查)。第二种方法应该是首选的,因为网络和资源消耗较低。听起来你已经知道主要的区别了。调度(轮询)更简单,也更容易实现,因为客户机决定是否/何时需要数据,而服务器只是像往常一样响应请求。发布/订阅更为复杂,您需要额外的订阅/取消订阅调用,服务器需要跟踪所有订阅的客户端。@kapex很抱歉,没有主题。。在客户机/服务器架构上是否有用于发布/订阅实现的框架或库?@Ruslan有ApacheKafka和ApachePulsar。大多数MessageBroker框架也提供类似的功能。不过,这些都是企业规模,而且往往是矫枉过正。我确信还有更多我不知道的轻量级框架/库。许多服务器框架也已经集成了发布/订阅解决方案(例如,我认为Spring已经集成了JMS)。对于进程内发布/订阅,有像Guava EventBus这样的轻量级库。@kapex感谢您的详细解释。我现在已经不再适应HTML5了。在过去,有人谈论保持连接打开,让浏览器有一个允许推送通知的确认对话框。从理论上讲,浏览器可以有一个大部分被阻塞的线程,等待通知(最佳),或者进行定期轮询。在网上寻找更多更好的信息。