我试图找到一种方法来使用由websocket发送到kafka主题的消息(消息由websocket发送到地址“ ws:// address:port / topic_name”,我想添加所有这些有关kafka主题的消息)。 我阅读了有关kafka connect的文章,并试图找到一种使用它的方法,但是它似乎不起作用... 在此先感谢:)
答案 0 :(得分:1)
Kafka connect的想法是您具有某种形式的外部集成,可以用作存储。这可以是SAP,Salesforce,RDBMS,MQ或其他任何具有状态的东西。您的websocket终结点没有数据,您无法对其进行轮询,这是其他人正在调用它,因此才传输了数据。现在,如果您知道实际上由谁来保存数据,则可以使用本指南潜在地建立一个收集器。 https://docs.confluent.io/current/connect/devguide.html
对于您的特定情况,最好的办法是使用Kafka Producer API https://docs.confluent.io/current/clients/producer.html
并从您的websocket中指定使用此生产者将消息发布到该主题,或者甚至更好(如果您使用的是spring),则可以使用更高级别的抽象,即KafkaTemplate https://docs.spring.io/spring-kafka/reference/html/#sending-messages。
答案 1 :(得分:1)
在Confluent Platform中,没有Kafka连接器连接到套接字。
我在一个使用Kafka进行生产的团队中工作,我们的资源是一个套接字,所以您的选择是使用支持该套接字-> Kafka产生的平台,或者自己编写一个。
关于可能的平台,尽管您可以利用它们解决此问题,但我认为其中大多数会过大,
1.对于较小的负载,请使用NiFi或MiniFi,请使用PublishKafka Processor
2. StreamSets和Kafka Producer Destination
3. Apache Flume-不太推荐,此项目正在停止发展。
如果您想编写自己的生产者,则基本上必须在此端口上创建一个侦听器,并将传入的消息产生给Kafka。如果这是一个Web套接字,则只需获取请求的负载并将其生成给Kafka。
可以从tutorialspoint simple producer example *
以下是一些开源项目示例:
1. https://github.com/DataReply/kafka-connect-socket-source
2. https://github.com/kafka-socket/miniature_engine
3. https://github.com/dhanuka84/kafka-connect-tcp
4. https://github.com/krux/tcp-stream-kafka-producer
答案 2 :(得分:0)
您可以考虑使用分布式实时发布/订阅消息平台(例如Ably)将WebSocket消息发送到Kafka主题。 Ably平台内发布的消息可以直接streamed发送给Kafka,从而使您可以实时处理这些数据。例如,如果您有一个聊天应用程序,则Ably可以通过Ably协议来增强对等通信。
披露:我为Ably工作。
答案 3 :(得分:0)
完全公开:我为MigratoryData工作。
您可以签出MigratoryData's solution for Kafka。 MigratoryData是可伸缩的WebSocket服务器。用于Kafka的MigratoryData源/接收器连接器使用Kafka Connect API,可用于从Kafka实时流数据到WebSocket客户端,反之亦然。该解决方案的主要优点是,它可以将Kafka消息传递扩展到WebSocket客户端,同时保留Kafka的关键功能,如保证传递,消息排序等。