2016-10-14 2 views
4

Est-il possible/est-il logique d'utiliser une application Android en tant que «client producteur» pour Apache Kafka?Comment utiliser Android App en tant que "client producteur" pour Kafka?

Disons que mon application Android doit capturer et analyser les données de temps de réaction. L'objectif est de collecter toutes les données et de montrer le temps de réaction moyen en temps réel dans l'application.

L'alternative est d'avoir un serveur d'application d'une sorte d'intermédiaire qui accepte les messages de l'application Android et les postes à Kafka, plutôt que l'application soit un producteur Kafka lui-même.

Répondre

5

Oui, c'est possible, mais à mon avis cela a quelques inconvénients.

En général, j'aime que les clients soient aussi simples que possible pour éviter les problèmes de maintenance. À la place, je redirigerais toutes les demandes des clients via une API REST sur mon serveur d'applications. Les inconvénients ne sont pas liés à Kafka, mais sont des problèmes communs des clients natifs.

couplage

Vous coupler l'application Android de près à votre infrastructure de messagerie. Si vous décidez par la suite qu'une solution Kafka est trop lourde et que Plain Old Java est suffisant, vous devez d'abord mettre à jour l'application Android et attendre que suffisamment d'utilisateurs effectuent une mise à jour.

authentification

Vous avez probablement déjà une sorte d'authentification dans votre application. Vous pouvez également créer authenticated connections to Kafka. Vous aurez donc deux chemins d'authentification, alors qu'avec un serveur d'applications, Kafka doit seulement vérifier si les requêtes proviennent du serveur d'applications de confiance, ce qui signifie moins d'effort d'implémentation.

...

+1

de coure il pourrait y avoir des cas d'utilisation où la connexion Kafka est directement la meilleure option. Mais vous n'avez pas expliqué par exemple pourquoi vous devez envoyer les données au serveur, je ne peux donc donner qu'une réponse générale. –

+1

merci beaucoup pour votre opinion! alors vous dites que c'est possible. avez-vous des extraits de code ou des liens utiles pour cette approche? – lidox

+1

@lidox: Utiliser Kafka dans Android n'est pas différent de n'importe quelle autre application Java. Je n'ai pas essayé mais il ne devrait pas y avoir de problèmes de compatibilité. Bien sûr, vous avez d'autres défis. Par exemple, il n'y a pas de connexion Internet permanente, vous devez donc stocker temporairement les messages sur l'appareil et réessayer de les envoyer ultérieurement. Si vous avez des problèmes spécifiques, créez une autre question et envoyez-moi un lien ici. –