#1
This guide shows how to integrate H2 database with Apache Kafka in Spring Boot for producing and consuming data events.

1. Add Dependencies

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
  <groupId>com.h2database</groupId>
  <artifactId>h2</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.kafka</groupId>
  <artifactId>spring-kafka</artifactId>
</dependency>

2. Configure H2 and Kafka

spring.datasource.url=jdbc:h2:mem:kafkadb
spring.datasource.driver-class-name=org.h2.Driver
spring.jpa.hibernate.ddl-auto=create

spring.kafka.bootstrap-servers=localhost:9092
spring.kafka.consumer.group-id=demo-group

3. Create Entity

@Entity
public class Order {
  @Id @GeneratedValue
  private Long id;
  private String product;
  private int quantity;
}

4. Repository

public interface OrderRepository extends JpaRepository<Order, Long> {}

5. Kafka Producer

@Service
public class OrderProducer {
  private final KafkaTemplate<String, String> kafkaTemplate;

  public OrderProducer(KafkaTemplate<String, String> kafkaTemplate) {
    this.kafkaTemplate = kafkaTemplate;
  }

  public void sendOrder(String msg) {
    kafkaTemplate.send("orders", msg);
  }
}

6. Kafka Consumer

@Service
public class OrderConsumer {
  private final OrderRepository repo;

  public OrderConsumer(OrderRepository repo) {
    this.repo = repo;
  }

  @KafkaListener(topics = "orders", groupId = "demo-group")
  public void listen(String message) {
    String[] parts = message.split(",");
    repo.save(new Order(null, parts[0], Integer.parseInt(parts[1])));
  }
}

7. REST Controller

@RestController
@RequestMapping("/orders")
public class OrderController {
  private final OrderProducer producer;

  public OrderController(OrderProducer producer) {
    this.producer = producer;
  }

  @PostMapping
  public String create(@RequestParam String product, @RequestParam int qty) {
    producer.sendOrder(product + "," + qty);
    return "Order sent!";
  }
}

image quote pre code