0

내 프로젝트에 Apache Kafka을 사용했으며 프로젝트의 일부인 반응 기본 애플리케이션에 통합해야합니다. 기본적으로 내 서버는 Kafka 제작자이며 앱은 주제를 듣고 소비자가되어야합니다.내 React-Native 앱에서 Apache Kafka를 사용해야합니다.

처음에는이 npm 패키지를 사용해 보았습니다. https://github.com/SOHU-Co/kafka-node.
그러나이 패키지는 React Native 번들의 일부가 아닌 nodej의 핵심 모듈을 사용합니다. React Native 앱에서 Kafka를 사용하여 통신 할 수있는 다른 방법이 있습니까? 감사합니다.

답변

0

시도 DeepstreamIO.

이것은 React-Native와 Kafka와 잘 통합되는 실시간 소켓 서버입니다. 메시지 브로커로 Kafka를 사용하여 분산 된 Deepstream 노드간에 메시지를주고 메시지를 다른 가입 클라이언트에 푸시 할 수 있습니다. 그들은 오픈 소스이므로 특정 요구에 맞게 커넥터를 구성 할 수 있습니다.

+0

와우! 방금 당신의 의견을 읽었습니다. 나는 똑같은 일을했고 똑같은 해결책을 따랐다는 것을 말해줘야한다. 그것은 매력처럼 일했습니다. Deepstream에 대해 싫어했던 유일한 것은 Kafka에 있었던 커밋의 지속성이 아닙니다. 이 답변을 올바른 것으로 표시하십시오. –

0

빠른 해결책은 간단한 REST API 뒤에 Kafka 클러스터를 넣는 것입니다. kafka-rest과 같은 라이브러리를 사용하면 fetch 기능을 사용하여 React Native 앱을 쉽게 연결할 수 있습니다. 더 나아가서 kafka-rest-node 클라이언트를 네이티브 네이티브 앱에 통합하려고 할 수 있습니다. repo에 대한 대략적인 개요가 핵심 Node 종속성을 초래하지는 않습니다.

"실시간"업데이트를 허용하는 또 다른 방법은 Kafka 스트림을 WebSocket 연결로 변환하는 웹 서버 뒤에 Kafka를 넣는 것입니다. kafka-websocket과 같은 라이브러리는 고객이 소비하고 생산할 수있게하는 반면 Microsoft의 과 같은 간단한 라이브러리는 메시지를 소비 할 수 있습니다.

모바일 클라이언트가 스트리밍 데이터와 항상 잘 작동하지 않는다는 점에 유의해야합니다. 다양한 불확실한 네트워크 조건 (대기 시간, 신호 손실 등)에서 WebSocket 기반 구현을 테스트하는 것이 좋습니다.

+0

답장을 보내 주셔서 감사합니다. 이것은 확실히 카프카를위한 REST 래퍼로 가능합니다. 하지만이 경우에도 계속해서 내 응답 기본 응용 프로그램에서 Rest 래퍼 서버에 대한 나머지 호출을 유지해야합니다. (또는 폴링이라고 말할 수 있습니다.) 그러나 이것은 Pub/Sub 아키텍처가 없으므로 카프카의 목적을 이길 것입니다. 내 앱이 계속해서 하나의 요청을 계속하는 것을 원하지 않습니다. 'kafka-rest-node'는'kafka-native'를 내부적으로 사용하기 때문에 사용할 수 없습니다. –

+0

@MustansirZia 귀하의 우려 사항을 반영하여 답변을 업데이트했습니다. – jumploops

+0

관심을 가져 주셔서 감사합니다. 중간에 브로커를 두는 것은 너무 많은 작업과 불필요한 복잡성이었습니다. DeepStream에 갔었는데, 그것은 단지 내 필요를 잘 충족시키기위한 것이 었습니다. –

관련 문제