WIP
[demos/kafka/training] / src / main / java / de / juplo / kafka / ApplicationConfiguration.java
1 package de.juplo.kafka;
2
3 import org.apache.kafka.clients.producer.KafkaProducer;
4 import org.apache.kafka.clients.producer.Producer;
5 import org.springframework.boot.autoconfigure.kafka.KafkaProperties;
6 import org.springframework.boot.context.properties.EnableConfigurationProperties;
7 import org.springframework.context.annotation.Bean;
8 import org.springframework.context.annotation.Configuration;
9 import org.springframework.kafka.annotation.EnableKafka;
10 import org.springframework.kafka.core.ProducerFactory;
11
12 import java.util.Properties;
13
14
15 @Configuration
16 @EnableConfigurationProperties({ KafkaProperties.class, ApplicationProperties.class })
17 @EnableKafka
18 public class ApplicationConfiguration
19 {
20   @Bean
21   public RestGateway restGateway(
22       ApplicationProperties applicationProperties,
23       KafkaProperties kafkaProperties,
24       Producer<String, Integer> kafkaProducer)
25   {
26     return
27         new RestGateway(
28             kafkaProperties.getClientId(),
29             applicationProperties.getTopic(),
30             applicationProperties.getPartition(),
31             kafkaProducer);
32   }
33
34   @Bean(destroyMethod = "close")
35   public Producer<String, Integer> kafkaProducer(ProducerFactory<String, Integer> factory)
36   {
37     return factory.createProducer();
38   }
39 }