Apache kafka Kafka streaming to Ignite是否在事务模式下运行?

Apache kafka Kafka streaming to Ignite是否在事务模式下运行?,apache-kafka,ignite,acid,Apache Kafka,Ignite,Acid,我在ApacheIgnite中有一个分布式数据库,还有一个ApacheKafka流式服务,将数据流传输到Ignite集群。卡夫卡拖缆的工作原理如下 创建ignite节点以查找群集 在群集中启动kafka streamer singleton作为服务 关闭点火节点 Ignite群集处于事务模式,但我不确定这是保证ACID还是仅启用ACID。这个点燃的流媒体服务会被认为是酸性的吗 以下是卡夫卡拖缆的代码: public class IgniteKafkaStreamerService impleme

我在ApacheIgnite中有一个分布式数据库,还有一个ApacheKafka流式服务,将数据流传输到Ignite集群。卡夫卡拖缆的工作原理如下

  • 创建ignite节点以查找群集
  • 在群集中启动kafka streamer singleton作为服务
  • 关闭点火节点
  • Ignite群集处于事务模式,但我不确定这是保证ACID还是仅启用ACID。这个点燃的流媒体服务会被认为是酸性的吗

    以下是卡夫卡拖缆的代码:

    public class IgniteKafkaStreamerService implements Service {
    
    private static final long serialVersionUID = 1L;
    
    @IgniteInstanceResource
    private Ignite ignite;
    private KafkaStreamer<String, JSONObject> kafkaStreamer = new KafkaStreamer<>();
    private IgniteLogger logger;
    
    public static void main(String[] args) throws InterruptedException {
        TcpDiscoverySpi spi = new TcpDiscoverySpi();
    
        TcpDiscoveryMulticastIpFinder ipFinder = new TcpDiscoveryMulticastIpFinder();
    
        // Set Multicast group.
        //ipFinder.setMulticastGroup("228.10.10.157");
    
        // Set initial IP addresses.
        // Note that you can optionally specify a port or a port range.
        ipFinder.setAddresses(Arrays.asList("127.0.0.1:47500..47509"));
    
        spi.setIpFinder(ipFinder);
    
        IgniteConfiguration cfg = new IgniteConfiguration();
    
        // Override default discovery SPI.
        cfg.setDiscoverySpi(spi);
        Ignite ignite = Ignition.getOrStart(cfg);
    
        // Deploy data streamer service on the server nodes.
        ClusterGroup forServers = ignite.cluster().forServers();
        IgniteKafkaStreamerService streamer = new IgniteKafkaStreamerService();
        ignite.services(forServers).deployClusterSingleton("KafkaService", streamer);
        ignite.close();
    }
    
    
    @Override
    public void init(ServiceContext ctx) {
        logger = ignite.log();
        IgniteDataStreamer<String, JSONObject> stmr = ignite.dataStreamer("my_cache");
        stmr.allowOverwrite(true);
        stmr.autoFlushFrequency(1000);
        List<String> topics = new ArrayList<>();
        topics.add(0,"IoTData");
    
        kafkaStreamer.setIgnite(ignite);
        kafkaStreamer.setStreamer(stmr);
        kafkaStreamer.setThreads(4);
        kafkaStreamer.setTopic(topics);
        Properties props = new Properties();
        props.put(StreamsConfig.APPLICATION_ID_CONFIG, "NiFi-consumer");
        props.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "192.168.1.242:9092");
        props.put("key.deserializer", StringDeserializer.class.getName());
        props.put("value.deserializer", StringDeserializer.class.getName());
        props.put("group.id", "hello");
        kafkaStreamer.setConsumerConfig(props);
        kafkaStreamer.setSingleTupleExtractor(msg -> {
            JSONObject jsonObj = new JSONObject(msg.value().toString());
            String key = jsonObj.getString("id") + "," + new Date(msg.timestamp());
            JSONObject value = jsonObj.accumulate("date", new Date(msg.timestamp()));
    
            return new AbstractMap.SimpleEntry<>(key, value);
    
        });
    }
    
    @Override
    public void execute(ServiceContext ctx) {
        kafkaStreamer.start();
        logger.info("KafkaStreamer started.");
    }
    
    @Override
    public void cancel(ServiceContext ctx) {
        kafkaStreamer.stop();
        logger.info("KafkaStreamer stopped.");
    }
    
    }
    
    kafkastreamerservice公共类实现服务{
    私有静态最终长serialVersionUID=1L;
    @点火源
    私人点火;
    私有KafkaStreamer KafkaStreamer=新KafkaStreamer();
    私人记录器;
    公共静态void main(字符串[]args)引发InterruptedException{
    TcpDiscoverySpi spi=新的TcpDiscoverySpi();
    TcpDiscoveryMulticastIpFinder ipFinder=新的TcpDiscoveryMulticastIpFinder();
    //设置多播组。
    //ipFinder.setMulticastGroup(“228.10.10.157”);
    //设置初始IP地址。
    //请注意,您可以选择指定端口或端口范围。
    ipFinder.setAddresses(Arrays.asList(“127.0.0.1:47500..47509”);
    spi.setIpFinder(ipFinder);
    IgniteConfiguration cfg=新IgniteConfiguration();
    //覆盖默认的发现SPI。
    cfg.setDiscoverySpi(spi);
    Ignite Ignite=点火.getOrStart(cfg);
    //在服务器节点上部署数据流服务。
    ClusterGroup forServers=ignite.cluster().forServers();
    IgniteKafCastreamerService拖缆=新的IgniteKafCastreamerService();
    服务(用于服务器).deployClusterSingleton(“KafkaService”,streamer);
    点燃。关闭();
    }
    @凌驾
    公共void init(ServiceContext ctx){
    logger=ignite.log();
    IgniteDataStreamer stmr=ignite.dataStreamer(“我的缓存”);
    stmr.allowOverwrite(真);
    自动冲洗频率(1000);
    列表主题=新建ArrayList();
    添加(0,“物联网数据”);
    kafkaStreamer.setIgnite(点火);
    卡夫卡斯特雷默.塞斯特雷默(stmr);
    卡夫卡斯特雷默(4);
    kafkaStreamer.setTopic(主题);
    Properties props=新属性();
    props.put(StreamsConfig.APPLICATION_ID_CONFIG,“NiFi消费者”);
    put(StreamsConfig.BOOTSTRAP\u SERVERS\u CONFIG,“192.168.1.242:9092”);
    put(“key.deserializer”,StringDeserializer.class.getName());
    put(“value.deserializer”,StringDeserializer.class.getName());
    props.put(“group.id”、“hello”);
    kafkaStreamer.setConsumerConfig(道具);
    kafkaStreamer.setSingleTupleExtractor(消息->{
    JSONObject jsonObj=新的JSONObject(msg.value().toString());
    String key=jsonObj.getString(“id”)+,“+新日期(msg.timestamp());
    JSONObject value=jsonObj.acculate(“日期”,新日期(msg.timestamp());
    返回新的AbstractMap.SimpleEntry(键,值);
    });
    }
    @凌驾
    公共作废执行(ServiceContext ctx){
    kafkaStreamer.start();
    info(“KafkaStreamer已启动”);
    }
    @凌驾
    公共作废取消(ServiceContext ctx){
    kafkaStreamer.stop();
    logger.info(“KafkaStreamer停止”);
    }
    }
    
    KafkaStreamer
    在引擎盖下使用
    IgniteDataStreamer
    实现
    IgniteDataStreamer
    本质上不是事务性的,因此没有任何事务性保证。

    KafkaStreamer
    在引擎盖下使用
    IgniteDataStreamer
    实现
    IgniteDataStreamer
    本质上不是事务性的,因此没有任何事务性保证