Ich habe vor kurzem mit Apache Storm begonnen und gerade meine ersten Topologien fertiggestellt (alles in Java).Wie würde ich einen HTTP-Spout für Apache Storm in Java implementieren?
Als nächsten Schritt wollte ich Sensor-Werte von einem TI SensorTag, der mit einem Raspberry Pi verbunden ist, in eine dieser Topologien einfügen.
Ich kann die Sensordaten über HTTP senden, aber ich bin mir nicht sicher, wie ich einen Arbeitsauslauf implementieren würde, der diese Anfragen aufnimmt.
Idee der Topologie: Sie sollte die HTTP-Requests mit den Sensorwertinformationen aufnehmen, diese Daten in die Topologie einspeisen und anschließend mit einer Schraube in eine Datei/Datenbank schreiben.
Bisher habe ich einen Beitrag auf Stackoverflow gefunden, über einen HTTP-Spout (Storm : Spout for reading data from a port), aber leider durfte ich keinen Kommentar hinterlassen oder private Nachrichten schreiben (Sorry wenn ich etwas verpasst habe). Ich bin mir nicht sicher, wie genau diese Tülle funktioniert und wollte nach einem Beispiel-Code fragen (hauptsächlich wollte ich wissen, wie die ganze Sache in der Topologie eingerichtet wurde).
Auch ich habe versucht, die DRPC-Funktion von Storm (http://storm.apache.org/releases/1.0.0/Distributed-RPC.html) zu verwenden, um meine HTTP-Anfragen in die Topologie zu bekommen, aber ich konnte die Dokumentation und Storm-Starter-Beispiele bisher nicht weiterverfolgen Ich lerne immer noch, wie man Sturm richtig benutzt. Ich war wirklich verwirrt darüber, den drpc-Server einzurichten und wie man die eingehenden Anfragen abhört.
Also ich wollte wissen, ob jemand auch mit diesem Problem konfrontiert war und eine Lösung gefunden hat oder mir Ratschläge geben kann, was ich sonst noch versuchen könnte.
Würde so ein HTTP-Spout (eine Socket-Verbindung, soweit ich gesehen habe ?!) oder ein DRPC-Server funktionieren?
ps: Auch eine Code-Vorlage, andere Beispiele oder andere Informationsquellen, die hilfreich sein könnten, um dieses Thema zu verstehen, wäre nett!
Hallo Chris, Vielen Dank für Ihre Antwort! Ich werde Kafka genauer unter die Lupe nehmen. Ich hätte nur noch eine Frage dazu. Sie haben erwähnt, dass Sie ein Servlet für die Bearbeitung der Anfrage verwenden würden ... aber wie würden Sie dieses Servlet mit Kafka verbinden/wie würden Sie die Daten in Kafka schreiben? Verwenden Sie einfach eine Methode auf dem Servlet als eine Art Kafka-Produzent? –
Ich würde eine statische Variable in der Servlet-Klasse konstruieren, um die Producer-Instanz zu halten. Die Methode doGet() des Servlets würde nur die Daten der HTTP-Anfrage marshallen und eine leicht analysierbare String-Nachricht mit dem Producer an das Kafka-Thema schreiben. Die init() -Methode des Servlets könnte verwendet werden, um die Erzeugerkonstruktlogik zu halten, und ich vergesse, was die Servlet-Abtrennmethode ist, aber Sie würden Ihre Erzeugerlogik dorthin bringen. –