programecomguedes/javaspringboot-azureeventhub-kafkaconsumer

By programecomguedes

Updated 10 months ago

A simple consumer for Azure Event Hub Kafka using Java Spring Boot.

Image
Message Queues
0

38

A simple consumer for Azure Event Hub Kafka using Java Spring Boot.

Run with Azure Event Hub

Requirements

  • Create a Azure Event Hub Namespace
  • Create a Event Hub/Topic. E.g: "testtopic"
  • Create a Consumer Group/Group. E.g: called "test"

Create a docker-compose.yml with the following content:

services:
  consumer:
    image: programecomguedes/javaspringboot-azureeventhub-kafkaconsumer
    ports:
      - "8082:8082"
    environment:
      - SPRING_PROFILES_ACTIVE=prd
      - KAFKA_BOOTSTRAP_SERVERS={EVENT_HUB_NAMESPACE}.servicebus.windows.net:9093
      - KAFKA_SASL_JAAS_CONFIG=org.apache.kafka.common.security.plain.PlainLoginModule required username="\$\ConnectionString" password="{EVENT_HUB_CONNECTION_STRING}";
      - KAFKA_TOPIC_NAME={TOPIC_NAME}
      - GROUP_ID={GROUP_ID_NAME}

Note:

  • Change EVENT_HUB_NAMESPACE and EVENT_HUB_CONNECTION_STRING to your Azure Event Hub namespace name and Azure Event Hubs connection string respectively.
  • Change TOPIC_NAME and GROUP_ID_NAME to your Azure Event Hub name and Azure Consumer Group respectively.

Execute the following command:

docker compose up

Run with local Kafka

Create a Docker Network (optional)

Note: Only if you don't have a kafka host configured

docker network create kafka_network

Create a docker-compose-kakfa.yml (optional)

Note: You can use your own kafka host

services:
  zookeeper:
    image: docker.io/bitnami/zookeeper:3.9
    ports:
      - "2181:2181"
    environment:
      - ALLOW_ANONYMOUS_LOGIN=yes
    networks:
      - kafka_network

  kafka:
    image: 'bitnami/kafka:3.4'
    ports:
      - '9092:9092'
    environment:
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092
    depends_on:
      - zookeeper
    networks:
      - kafka_network

networks:
  kafka_network:
    external: true

Execute:

docker compose -f docker-compose-kakfa.yml up -d

Create a docker-compose-consumer.yml

services:
  consumer:
    image: programecomguedes/javaspringboot-azureeventhub-kafkaconsumer:latest
    ports:
      - "8082:8082"
    environment:
      - SPRING_PROFILES_ACTIVE=local
      - KAFKA_BOOTSTRAP_SERVERS={KAFKA_HOST} # e.g: localhost:9092
      - KAFKA_TOPIC_NAME={TOPIC_NAME} # e.g: testtopic
      - GROUP_ID={GROUP_ID} # e.g: testgroup
    networks:
      - kafka_network

networks:
  kafka_network:
    external: true

Execute:

docker compose -f docker-compose-consumer.yml up

Producer Image

Repository

Docker Pull Command

docker pull programecomguedes/javaspringboot-azureeventhub-kafkaconsumer