Ignite Streamer.addData能否在StreamReceiver/Visitor的单独节点上执行?

Ignite Streamer.addData能否在StreamReceiver/Visitor的单独节点上执行?,ignite,Ignite,在插入缓存之前,是否可以从客户端节点执行流注入,并在服务器节点中截取相同的流以处理流 这样做的原因是,客户机节点从外部源接收流,并且需要将流注入到基于多个服务器节点之间的AffinityKey的分区缓存中。流需要在每个节点上被截获,并以最低的延迟进行处理。 我本可以使用缓存事件来实现这一点,但StreamVisitor应该更快 下面是我尝试执行的示例。启动2个节点:一个包含拖缆,另一个包含StreamReceiver: 公共类流节点{ 公共静态void main(字符串[]args){ ....

在插入缓存之前,是否可以从客户端节点执行流注入,并在服务器节点中截取相同的流以处理流

这样做的原因是,客户机节点从外部源接收流,并且需要将流注入到基于多个服务器节点之间的AffinityKey的分区缓存中。流需要在每个节点上被截获,并以最低的延迟进行处理。 我本可以使用缓存事件来实现这一点,但StreamVisitor应该更快

下面是我尝试执行的示例。启动2个节点:一个包含拖缆,另一个包含StreamReceiver:

公共类流节点{
公共静态void main(字符串[]args){ ...... 点火。设置客户端模式(错误); 点火=点火。启动(点火配置)

CacheConfiguration myCfg=新的CacheConfiguration(“myCache”);
......
IgniteCache myCache=ignite.getOrCreateCache(myCfg);
IgniteDataStreamer myStreamer=ignite.dataStreamer(myCache.getName());//为窗口化数据创建ignite拖缆

对于(int i=51;i当然可以在不同的节点上执行。通常,
addData()
在客户端节点上执行,而
StreamReceiver
在服务器节点上工作。您不必做任何特殊的事情来实现它

至于你的文章的其余部分,你能用更多的细节和样品来详细说明吗?我不理解你想要的设置


如果不需要修改数据,您可以使用连续查询,只需对其进行操作。

感谢Alamar的回复。很抱歉延迟提供详细信息。
    CacheConfiguration<SeqKey, String> myCfg = new CacheConfiguration<SeqKey, String>("myCache");
    ......
    IgniteCache<SeqKey, String> myCache = ignite.getOrCreateCache(myCfg);
    IgniteDataStreamer<SeqKey, String> myStreamer = ignite.dataStreamer(myCache.getName()); // Create Ignite Streamer for windowing data

    for (int i = 51; i <= 100; i++) {
        String paddedString = org.apache.commons.lang.StringUtils.leftPad(i+"", 7, "0") ;
        String word = "TEST_" + paddedString;
        SeqKey seqKey = new SeqKey("TEST", counter++ );
        myStreamer.addData(seqKey, word) ;
    }
}
    CacheConfiguration<SeqKey, String> myCfg = new CacheConfiguration<SeqKey, String>("myCache");
    ......
    IgniteCache<SeqKey, String> myCache = ignite.getOrCreateCache(myCfg);
    IgniteDataStreamer<SeqKey, String> myStreamer = ignite.dataStreamer(myCache.getName()); // Create Ignite Streamer for windowing data

    myStreamer.receiver(new StreamVisitor<SeqKey, String>() {
        int i=1 ;
        @Override
        public void apply(IgniteCache<SeqKey, String> cache, Map.Entry<SeqKey, String> e) {
            String tradeGetData = e.getValue();
            System.out.println(nodeID+" : visitorNode ..count="+ i++ + " received key="+e.getKey() + " : val="+ e.getValue());
            //do some processing here before inserting in the cache .. 
            cache.put(e.getKey(), tradeGetData);
        }
    });
}