【问题标题】:Is it possible to implement server push using Apache Camel?是否可以使用 Apache Camel 实现服务器推送?
【发布时间】:2016-03-23 09:55:12
【问题描述】:

目前在我的应用程序中,我有一个显示一些信息的组件。它每分钟都使用 jetty 与包含 csv 文件的服务器进行通信,以查看它是否已更改。我想改进这个解决方案,并有可能在 csv 文件更改时立即更新我的组件。

我考虑使用 Apache Camel,因为在收到有关更改的推送后,我还想将其发送到系统的其他部分,例如使用 RMI。 我阅读了 Apache Camel 的文档,发现它很容易在组件之间接收、处理和发送数据,但我不确定它是否也可以等待通知。 也许我应该考虑骆驼以外的其他事情?

非常感谢您的帮助。谢谢。

【问题讨论】:

  • 使用 MQTT 并为您的客户端订阅服务器主题。还有其他选择。
  • Camel 的 MQTT 组件非常好用。

标签: java csv apache-camel server-push


【解决方案1】:

Camel 可以很好地处理异步调用,例如来自服务器推送的调用。根据您的服务器将如何发送更新的 csv 文件,您可以相应地触发其余进程。例如,您可以让端点不断监听文件删除,并且每当目录中出现新的 csv 文件时,它都会自动触发其余进程。您也可以通过 web 服务调用或从某处的队列中提取信息来执行此操作。

更新:

我在下面的评论中用完了字符,所以我会在这里完成我的想法。使用服务器推送方法,您将无需进行昂贵的网络调用来检查您的文件是否已更改。您将实现一个等待来自服务器的刺激的侦听器。我建议的一种方法是让服务器将文件推送给您(使用 FTP 或其他方式),并且您有一个骆驼端点来监听它。骆驼端点本质上是轮询的,但这种轮询并不昂贵,因为您只是轮询本地目录而不是进行网络调用。我不知道您对服务器推送有多少控制权,但如果您想让调用真正异步,您可以让服务器推送采用 Web 服务的形式,该服务将调用您公开的 SOAP/REST 端点。然后,该 Web 服务调用将通过零轮询触发您想要的其余路由/进程。

【讨论】:

  • 我的问题是:我应该如何使用 Apache Camel 或其他库来实现“不断监听文件删除的端点”?
  • @Peters_,这将是轮询,file component 可以这样做,但在您的问题中您要求推送解决方案。
  • 是的,我正在寻找推送解决方案,而不是轮询。实际上它不是我的带有 csv 文件的服务器。这就是为什么我现在不更新的原因。
  • @Peters_,我认为您混淆了推送和拉取/轮询这两个术语。如果生成 csv 文件的进程不受您的控制,并且您无法更改它以将文件推送给您,即调用您的服务器组件,那么您需要轮询文件。文件和 ftp 组件允许您这样做。也许其他人。如果要使用文件,则必须能够挂载放置 CSV 文件的文件系统。如果你想使用 FTP,那么对方必须为你提供一个 FTP 服务器。
  • 我有点困惑。是的,生成 csv 的过程不在我的控制之下,我希望在它发生时立即更新我的组件。当我轮询时,我必须循环进行,并且我的更新不会立即进行。我说的对吗?
猜你喜欢
  • 1970-01-01
  • 2010-11-28
  • 1970-01-01
  • 2016-04-07
  • 2010-12-24
  • 2023-01-26
  • 2011-07-14
  • 1970-01-01
相关资源
最近更新 更多