【问题标题】:Need to use Apache Kafka in my React-Native app需要在我的 React-Native 应用程序中使用 Apache Kafka
【发布时间】:2017-05-29 05:54:20
【问题描述】:

我在我的项目中使用了Apache Kafka,需要将它集成到一个 react-native 应用程序中,该应用程序也是项目的一部分。基本上,我的服务器是 Kafka 生产者,应用程序需要监听主题并成为消费者。

起初,我尝试使用这个 npm 包。 https://github.com/SOHU-Co/kafka-node。
但是这个包依赖于 nodejs 的核心模块,这些模块不是 React Native 包的一部分。有没有其他方法可以让我在 React Native 应用程序中使用 Kafka 进行通信? 谢谢!

【问题讨论】:

    标签: javascript android react-native apache-kafka kafka-consumer-api


    【解决方案1】:

    一个快速的解决方案是将 Kafka 集群置于一个简单的 REST API 之后。使用 kafka-rest 之类的库可能是一种使用内置 fetch 函数连接 React Native 应用程序的简单方法。您可以更进一步,尝试将 kafka-rest-node 客户端集成到您的 React Native 应用程序中;对 repo 的粗略概述不会导致任何核心 Node 依赖项。

    另一种允许“实时”更新的方法可能包括将 Kafka 放在一个将 Kafka 流转换为 WebSocket 连接的 Web 服务器后面。 kafka-websocket 等库允许客户端消费和生产,而像 Microsoft 的 kafka-proxy-ws 这样更简单的库只允许消费消息。

    值得注意的是,移动客户端并不总是能很好地处理流数据,建议您在各种不确定的网络条件(延迟、信号丢失等)上测试基于 WebSocket 的实现。

    【讨论】:

    • 非常感谢您的回复!这对于 Kafka 的 REST 包装器当然是可行的。但在那种情况下,我也需要不断地从我的 react native 应用程序对 Rest 包装服务器进行 Rest 调用。 (或者你可以说,轮询)但是,这将超出 Kafka 的目的,因为不会有任何 Pub/Sub 架构。我不希望我的应用程序不断地提出一个又一个请求。 kafka-rest-node 在内部使用 kafka-native,所以我们也不能使用它。
    • @MustansirZia 我已更新答案以反映您的担忧。
    • 感谢您的关注!在两者之间放置一个经纪人只是太多的工作和不必要的复杂性。我选择了 DeepStream,因为它只是为了很好地满足我的需求。
    【解决方案2】:

    试试DeepstreamIO。

    它是一个与 React-Native 和 Kafka 完美集成的实时套接字服务器。它可以使用 Kafka 作为消息代理,在分布式 Deepstream 节点之间传递消息,并将消息推送到其他订阅的客户端。它们是开源的,因此您可以根据您的特定需求配置它们的连接器。

    【讨论】:

    • 哇!我刚看了你的评论。我应该告诉你我做了完全相同的事情并遵循完全相同的解决方案。它就像一种魅力,我唯一不喜欢 Deepstream 的是 Kafka 中的非持久性提交。无论如何将此答案标记为正确。
    • 顺便说一句,链接已关闭
    猜你喜欢
    • 2023-02-23
    • 2020-05-22
    • 2020-12-06
    • 1970-01-01
    • 2019-12-03
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    相关资源
    最近更新 更多