我最近开始使用Apache Storm,刚完成构建我的第一个拓扑(全部使用java)。我将如何在Java中为Apache Storm实现HTTP Spout?
下一步,我想将来自连接到Raspberry Pi的TI SensorTag的传感器值放入其中一个拓扑中。
我能够通过HTTP发送传感器数据,但我不知道如何实现一个工作喷口,它接受这些请求。
拓扑思想:它应该带有传感器值信息的HTTP请求,将这些数据发送到拓扑中,然后使用螺栓将它们写入文件/数据库中。
到目前为止,我在Stackoverflow上发现了一篇关于HTTP-Spout(Storm : Spout for reading data from a port)的文章,但遗憾的是,我不允许留下评论或写任何私人消息(对不起,如果我错过了这些)。 我不确定这个喷口是如何工作的,想要求一个例子代码(基本上我想知道整个拓扑结构是如何设置的)。
另外我试图使用Storm的DRPC函数(http://storm.apache.org/releases/1.0.0/Distributed-RPC.html)将我的HTTP请求放入拓扑结构中,但是迄今为止我无法通过文档和风暴启动器实例进一步获得进一步的进展,因为即时通讯仍在学习如何正确使用风暴。我对设置drpc-server以及如何配置侦听传入请求感到非常困惑。
所以我想知道,如果有人也面临这个问题,并已找到解决方案或可以给我的建议,还有什么我可以尝试。
这样的HTTP-Spout(一个套接字连接,据我所见?!)或DRPC服务器工作?
ps:另外一个代码模板,其他例子或任何其他信息来源,这可能有助于了解有关该主题将是很好的!
嗨克里斯, 谢谢你的回答! 我会仔细看看卡夫卡。我只想再提出一个问题。你提到过,你会使用一个servlet来处理请求......但是如何将这个servlet连接到Kafka /你将如何将数据写入Kafka? 只需要在servlet上使用一种方法作为某种Kafka生产者? –
我会在servlet类上构造一个静态变量来保存生产者实例。 servlet上的doGet()方法只会整理HTTP请求上的数据,并使用生产者编写一个易于解析的String消息给Kafka主题。 servlet的init()方法可以用来保存生产者构造逻辑,并且我忘记了servlet拆卸方法的副作用,但是你会把生产者关闭逻辑放在那里。 –