需要在我的React-Native应用程序中使用Apache Kafka
我在我的项目中使用了Apache Kafka,并且需要将它集成到作为项目一部分的react-native应用程序中。基本上,我的服务器是一个卡夫卡制作人,应用程序需要倾听主题并成为消费者。需要在我的React-Native应用程序中使用Apache Kafka
起初,我试着用这个npm包。 https://github.com/SOHU-Co/kafka-node。
但是,此软件包依赖于不属于React Native软件包的nodejs的核心模块。有没有其他方法可以在React Native应用程序中使用Kafka进行交流? 谢谢!
尝试DeepstreamIO。
这是一个实时套接字服务器,与React-Native和Kafka很好地集成在一起。它可以使用Kafka作为消息代理,在分布式的Deepstream节点之间传递消息,并将消息推送到其他订阅的客户端。他们是开源的,所以你可以配置他们的连接器以满足您的特定需求。
快速解决方案是将Kafka集群放在简单的REST API后面。使用类似kafka-rest的库可能是使用内置fetch
函数连接React Native应用程序的简单方法。您可以进一步尝试将kafka-rest-node客户端集成到您的React Native应用程序中;对回购的粗略概述不会导致任何核心节点依赖性。
另一种允许“实时”更新的方法可能包括将Kafka放置在将Kafka流转换为WebSocket连接的Web服务器后面。诸如kafka-websocket这样的库允许客户端消费和生产,而像微软的kafka-proxy-ws这样更简单的库仅允许消费消息。
值得注意的是,移动客户端并不总是适合流式传输数据,因此建议您在各种不确定的网络条件(延迟,丢弃信号等)下测试基于WebSocket的实现。
非常感谢回复!对于Kafka来说,这当然是可行的。但是在这种情况下,我也需要不断地从我的反应原生应用中继续对Rest包装服务器进行Rest调用。 (或者你可以说,投票)然而,这将会超过Kafka的目的,因为不会有任何Pub/Sub架构。我不希望我的应用程序继续提出一个接一个的请求。 'kafka-rest-node'在内部使用'kafka-native',所以我们也不能使用它。 –
@MustansirZia我已经更新了答案,以反映您的担忧。 – jumploops
感谢您的关注!把一个经纪人介入他们之间只是太多的工作和不必要的复杂性。我去了DeepStream,因为它只是为了满足我的需求。 –
哇!我刚刚读了你的评论。我应该告诉你,我做了完全相同的事情,并遵循完全相同的解决方案。它像一个魅力一样工作,我对Deepstream唯一不喜欢的地方就是在Kafka中没有持续的提交。无论如何,标记这个答案是正确的。 –