apache点燃数据流

时间:2017-07-11 12:42:33

标签: java apache stream ignite

我对Ignite的Streaming部分有疑问。

据我所知,这是将数据导入缓存的方法,但我也看到我们可以配置流接收器以应用其他一些自定义逻辑。

所以我尝试创建一个带接收器的类和一个将数据注入流中的类(所以在服务器模式下有2个主实例和2个Ignite实例),但我“只是”将数据放入流媒体的缓存中(否)任何处理到接收器的自定义逻辑)。所以,我问我是否遗漏了一些东西,或者我是否不太了解什么是流入Ignite的流。

如果我将发件人部分放入接收器,我就有了打印件。

有谁知道我在做什么(或理解)错了?

接收者类:

public class Receiver {
    public static void main(String[] args){
        IgniteConfiguration igniteConfig = new IgniteConfiguration();
        CacheConfiguration<String, String> cacheConfig = new CacheConfiguration<>("CacheStream");   


        igniteConfig.setCacheConfiguration(cacheConfig);


        Ignite ignite = Ignition.getOrStart(igniteConfig);

        IgniteDataStreamer<String, String> streamer = ignite.dataStreamer("CacheStream");

        streamer.receiver(StreamVisitor.from((cacheLambda, e) -> {
            System.out.println("Value : " + e.getValue());
        }));
    }
}

发件人类:

public class Sender {
    public static void main(String[] args){
        IgniteConfiguration igniteConfig = new IgniteConfiguration();
        CacheConfiguration<String, String> cacheConfig = new CacheConfiguration<>("CacheStream");

        igniteConfig.setCacheConfiguration(cacheConfig);

        Ignite ignite = Ignition.getOrStart(igniteConfig);

        IgniteDataStreamer<String, String> streamer = ignite.dataStreamer("CacheStream");

        for(int i = 0 ; i < 10 ; i++){
            streamer.addData("key-"+i, "value-"+i);
        }
        streamer.flush();
    }
}

祝你好运

1 个答案:

答案 0 :(得分:1)

ignite.dataStreamer(“CacheStream”)不返回您之前创建的相同数据流,每次都会创建新的数据流。

因此,在您的情况下,您配置了2个不同的数据广播器,并使用没有配置接收器的流传输上传数据。