【问题标题】:How to pass PcapPackets into Kafka queue如何将 PcapPackets 传递到 Kafka 队列中
【发布时间】:2014-12-06 23:53:35
【问题描述】:

使用下面的代码将 PcapPackets 传递给队列,是否可以将其传递给 Kafka 队列,以便 Kafka 消费者可以从 Kafka 生产者那里提取 PcapPackets?

StringBuilder errbuf = new StringBuilder();  
Pcap pcap = Pcap.openOffline("tests/test-afs.pcap", errbuf);  

PcapPacketHandler<Queue<PcapPacket>> handler = new PcapPacketHandler<Queue<PcapPacket>>() {  
  public void nextPacket(PcapPacket packet, Queue<PcapPacket> queue) {  
    PcapPacket permanent = new PcapPacket(packet);  

    queue.offer(packet);  
  }  
}  

Queue<PcapPacket> queue = new ArrayBlockingQueue<PcapPacket>();  

pcap.loop(10, handler, queue);  

System.out.println("we have " + queue.size() + " packets in our queue");  

pcap.close(); 

【问题讨论】:

    标签: pcap libpcap apache-kafka jnetpcap


    【解决方案1】:

    Kafka 支持将任意二进制数据存储为消息。在您的情况下,您只需要提供一个 PcapPacket 类二进制序列化器(和用于读取的反序列化器)。

    有关示例,请参阅 Kafka: writing custom serializer

    【讨论】:

      【解决方案2】:

      虽然我迟到了,但我在这里分享我的工具:Pcap Processor (GitHub URL) 如果有类似要求的人觉得它有用的话。我为我的研究开发了一个 Python 工具,用于读取原始 pcap 文件、处理它们并将它们提供给我的stream processor。由于我尝试了各种流协议,所以我在这个工具中实现了所有这些协议。 当前支持的接收器:

      • CSV 文件
      • Apache Kafka(编码为 JSON 字符串)
      • HTTP REST (JSON)
      • gRPC
      • 控制台(仅打印到终端)

      例如,要读取input.pcap 并将其发送到Kafka 主题,您需要调整kafka_sink.py 中的引导端点和主题名称。然后,从父目录执行以下命令将读取文件并将数据包发送到Kafka队列。

      python3 -m pcap_processor --sink kafka input.pcap
      

      更多详细信息和安装说明,请查看GitHubreadme,如果遇到任何问题,请随时打开GitHub issues

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-02-22
        • 1970-01-01
        • 1970-01-01
        • 2022-01-07
        • 1970-01-01
        • 1970-01-01
        • 2014-08-23
        • 2016-04-23
        相关资源
        最近更新 更多