是否可以将Websocket消息发送到kafka主题?

时间:2020-03-24 10:43:32

标签: websocket apache-kafka

我试图找到一种方法来使用由websocket发送到kafka主题的消息(消息由websocket发送到地址“ ws:// address:port / topic_name”,我想添加所有这些有关kafka主题的消息)。 我阅读了有关kafka connect的文章,并试图找到一种使用它的方法,但是它似乎不起作用... 在此先感谢:)

4 个答案:

答案 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.对于较小的负载,请使用NiFiMiniFi,请使用PublishKafka Processor
2. StreamSetsKafka Producer Destination
3. Apache Flume-不太推荐,此项目正在停止发展。

如果您想编写自己的生产者,则基本上必须在此端口上创建一个侦听器,并将传入的消息产生给Kafka。如果这是一个Web套接字,则只需获取请求的负载并将其生成给Kafka。
可以从tutorialspoint simple producer example *

复制示例Kafka生产者代码

以下是一些开源项目示例:
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的关键功能,如保证传递,消息排序等。