提问者:小点点

构建java kafka-stream应用程序的jar


我正在开发java kafka-stream应用程序。我使用< code>mvn clean package命令构建最终的jar文件。但是构建过程永远停留在某个状态

2019-07-09 13:58:18.991信息12689---[-StreamThread-1]org.apache.kafka.streams.KafkaStreams:stream客户端[wordcount-live-test-51e167c1-08d3-4b23-b5aa-97f9e40bc5e7]从重新报警到运行的状态转换

如何以jar的形式获得最终输出?

Properties streamsConfiguration = new Properties();
       streamsConfiguration.put(StreamsConfig.APPLICATION_ID_CONFIG, "wordcount-live-test");
       streamsConfiguration.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "kafka-2.c.charming-opus-833.internal:9092,kafka-0.c.charming-opus-833.internal:9092,kafka-1.c.charming-opus-833.internal:9092");
      // streamsConfiguration.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
       streamsConfiguration.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.String().getClass().getName());
       streamsConfiguration.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, SpecificAvroSerde.class);
       streamsConfiguration.put(StreamsConfig.COMMIT_INTERVAL_MS_CONFIG, 1000);
       streamsConfiguration.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "latest");
       streamsConfiguration.put("schema.registry.url", "http://35.184.181.97:8089/");


       final Map<String, String> serdeConfig = Collections.singletonMap("schema.registry.url", "http://35.184.181.97:8089/");

       final Serde<String> stringSerde = new Serdes.StringSerde();

       final Serde<GenericRecord> valueGenericAvroSerde = new GenericAvroSerde();
       valueGenericAvroSerde.configure(serdeConfig, false);

       final StreamsBuilder builder = new StreamsBuilder();
       final KStream<String, GenericRecord> stream = builder.stream("testtrip", Consumed.with(stringSerde, valueGenericAvroSerde));


       KStream<String, GenericRecord> tripStream[] = stream.branch(
               (k, v) -> (v.getSchema().getName().equals("TripCreated")),
               (k, v) -> (v.getSchema().getName().equals("TripCompleted"))
       );

       KStream<String, TripCompleted> tripCompletedKStream = tripStream[1].mapValues(
               (v) -> {
                   System.out.println("message received to trip Completed stream");
                   ObjectMapper objectMapper = new ObjectMapper();
                   try {
                       TripCompleted tc = objectMapper.readValue(v.toString(), TripCompleted.class);
                       return tc;
                   } catch (IOException e) {
                       e.printStackTrace();
                   }
                   return null;
               }
       );

       KStream<String, TripCreated> tripCreatedKStream = tripStream[0].mapValues(
               (v) -> {
                   System.out.println("message received to trip Created stream");
                   ObjectMapper objectMapper = new ObjectMapper();
                   try {
                       TripCreated tc = objectMapper.readValue(v.toString(), TripCreated.class);
                       return tc;
                   } catch (IOException e) {
                       e.printStackTrace();
                   }
                   return null;
               }
       );

       KTable<String, TripCompleted> tripCompletedTable = tripCompletedKStream.groupByKey().reduce(
               (k, v) -> {
                   System.out.println("trip completed message received");
                   return v;
               }
       );

       KTable<String, TripCreated> tripCreatedTable = tripCreatedKStream.groupByKey().reduce(
               (k, v) -> {
                   System.out.println("trip created message received");
                   return v;
               }
       );

       KTable<String, Materialized> joinedTable = tripCreatedTable.leftJoin(tripCompletedTable, (tcre, tcom) -> {
           long millis = System.currentTimeMillis();
           UUID uuid = UUID.randomUUID();
           System.out.println(tcre.toString());
           System.out.println(tcom == null ? "" : tcom.toString());
           Body body = Body.newBuilder()
                   .setBookedBy(tcre.getBody().getBookedBy())
                   .setDriverId(tcom == null ? 0 : tcom.getBody().getDriverId())
                   .setPassengerId(tcom == null ? 0 : tcom.getBody().getPassengerId())
                   .setModule(tcre.getBody().getModule())
                   .setTripId(tcre.getBody().getTripId())
                   .setVehicleType(tcre.getBody().getVehicleType())
                   .build();
           Materialized m = Materialized.newBuilder()
                   .setCreatedAt(millis)
                   .setExpiry(1234)
                   .setId(uuid.toString())
                   .setType("java_materialized_test")
                   .setVersion(1)
                   .setBody(body)
                   .setTraceInfo(setTraceInfo())
                   .build();
           return m;
       });



      // joinedTable.foreach((k, v) -> System.out.println("value:" + v.toString()));
       joinedTable.to("test_materialized");

       final Topology topology = builder.build();

       System.out.println("Topology:" + topology.describe());

       final KafkaStreams streams = new KafkaStreams(topology, streamsConfiguration);

       final CountDownLatch latch = new CountDownLatch(1);

       Runtime.getRuntime().addShutdownHook(new Thread() {
           @Override
           public void run() {
               streams.close();
               latch.countDown();
           }
       });
       try {
           streams.start();
           latch.await();
       } catch (final Throwable e) {
           System.exit(1);
       }
       System.exit(0);

   }

   private TraceInfo setTraceInfo() {
       TraceId traceId = TraceId.newBuilder()
               .setHigh(123456)
               .setLow(654321)
               .build();
       TraceInfo traceInfo = TraceInfo.newBuilder()
               .setTraceId(traceId)
               .setParentId(123456)
               .setSampled(true)
               .setSpanId(123456)
               .build();
       return traceInfo;
   }

共1个答案

匿名用户

但是,在评论了以下用于正常关闭应用程序的

   final CountDownLatch latch = new CountDownLatch(1);

        Runtime.getRuntime().addShutdownHook(new Thread() {
            @Override
            public void run() {
                streams.close();
                latch.countDown();
            }
        });
        try {
            streams.start();
            latch.await();
        } catch (final Throwable e) {
            System.exit(1);
        }
        System.exit(0);

mvn干净包成功构建jar