Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 如何正确读取Ignite缓存_Apache Kafka_Ignite - Fatal编程技术网

Apache kafka 如何正确读取Ignite缓存

Apache kafka 如何正确读取Ignite缓存,apache-kafka,ignite,Apache Kafka,Ignite,我有以下应用程序(我对这个框架很陌生),我希望看到缓存大小(增加),因为它从队列中读取消息,但它始终保持为0 KafkaStreamer<String, String, String> kafkaStreamer = new KafkaStreamer<>(); Ignition.setClientMode(true); Ignite ignite = Ignition.start(); Properties settings = n

我有以下应用程序(我对这个框架很陌生),我希望看到缓存大小(增加),因为它从队列中读取消息,但它始终保持为0

    KafkaStreamer<String, String, String> kafkaStreamer = new KafkaStreamer<>();

    Ignition.setClientMode(true);

    Ignite ignite = Ignition.start();

    Properties settings = new Properties();
    // Set a few key parameters
    settings.put("bootstrap.servers", "localhost:9092");
    settings.put("group.id", "test");
    settings.put("zookeeper.connect", "localhost:2181");
    settings.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
    settings.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
    settings.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
    settings.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");

    // Create an instance of StreamsConfig from the Properties instance
    kafka.consumer.ConsumerConfig config = new ConsumerConfig(settings);

    IgniteCache<String, String> cache = ignite.getOrCreateCache("myCache");

    IgniteDataStreamer<String, String> stmr = ignite.dataStreamer("myCache");
    // allow overwriting cache data
    stmr.allowOverwrite(true);

    kafkaStreamer.setIgnite(ignite);
    kafkaStreamer.setStreamer(stmr);

    // set the topic
    kafkaStreamer.setTopic("test");

    // set the number of threads to process Kafka streams
    kafkaStreamer.setThreads(1);

    // set Kafka consumer configurations
    kafkaStreamer.setConsumerConfig(config);

    // set decoders
    StringDecoder keyDecoder = new StringDecoder(null);
    StringDecoder valueDecoder = new StringDecoder(null);

    kafkaStreamer.setKeyDecoder(keyDecoder);
    kafkaStreamer.setValueDecoder(valueDecoder);

    kafkaStreamer.start();

    while (true) {

        System.out.println(cache.metrics().getSize());
        Thread.sleep(200);
    }
KafkaStreamer KafkaStreamer=new KafkaStreamer();
点火。设置客户端模式(真);
点火=点火。启动();
属性设置=新属性();
//设置一些关键参数
settings.put(“bootstrap.servers”,“localhost:9092”);
设置.put(“group.id”、“test”);
settings.put(“zookeeper.connect”、“localhost:2181”);
settings.put(“key.serializer”、“org.apache.kafka.common.serialization.StringSerializer”);
settings.put(“key.deserializer”、“org.apache.kafka.common.serialization.StringDeserializer”);
settings.put(“value.serializer”、“org.apache.kafka.common.serialization.StringSerializer”);
settings.put(“value.deserializer”、“org.apache.kafka.common.serialization.StringDeserializer”);
//从Properties实例创建StreamsConfig的实例
kafka.consumer.ConsumerConfig config=新的ConsumerConfig(设置);
IgniteCache cache=ignite.getOrCreateCache(“myCache”);
IgniteDataStreamer stmr=ignite.dataStreamer(“myCache”);
//允许覆盖缓存数据
stmr.allowOverwrite(真);
kafkaStreamer.setIgnite(点火);
卡夫卡斯特雷默.塞斯特雷默(stmr);
//设定主题
kafkaStreamer.setTopic(“测试”);
//设置处理Kafka流的线程数
kafkaStreamer.setThreads(1);
//设置卡夫卡消费者配置
kafkaStreamer.setConsumerConfig(配置);
//设置解码器
StringDecoder keyDecoder=新的StringDecoder(空);
StringDecoder valueDecoder=新的StringDecoder(空);
kafkaStreamer.setKeyDecoder(keyDecoder);
kafkaStreamer.setValueDecoder(valueDecoder);
kafkaStreamer.start();
while(true){
System.out.println(cache.metrics().getSize());
睡眠(200);
}
有人能说出遗漏了什么/错了什么吗


谢谢

您可能没有消耗足够的条目来填充
IgniteDataStreamer
缓冲区。尝试设置刷新超时:

stmr.autoFlushFrequency(1000);

由于性能原因,默认情况下禁用度量。您可以使用配置文件中的
CacheConfiguration.setStatisticsEnabled(true)
statisticsEnabled
属性启用度量