backstage4j/broker

By backstage4j

Updated 7 months ago

Broker to support backstage event hub

Image
Message queues
0

2.0K

backstage4j/broker repository overview

Docker Compose

1. docker-compose.yaml

version: '3.8'

services:
  zookeeper:
    image: zookeeper:3.8
    container_name: zookeeper
    hostname: zookeeper
    ports:
      - "2181:2181"
    environment:
      ZOO_MY_ID: 1
    volumes:
      - ./storage/zk-data1:/data
      - ./storage/zk-datalog1:/datalog
    networks:
      - bookkeeper-network
    healthcheck:
      test: ["CMD-SHELL", "echo stat | nc localhost 2181 | grep 'Zookeeper version'"]
      interval: 10s
      timeout: 5s
      retries: 3
 
  bookie:
    image: apache/bookkeeper:4.17.2
    hostname: bookie    
    #command: bin/bookkeeper shell metaformat -nonInteractive -force 
    entrypoint: ["/opt/bookkeeper/init.sh"]
    environment:
      BK_metadataServiceUri: zk://zookeeper:2181/bookkeeper/ledgers
      BK_DATA_DIR: /data/bookkeeper
    volumes:
      - bookie1-data:/data/bookkeeper
      - ./init.sh:/opt/bookkeeper/init.sh
      - ./bookkeeper.conf:/opt/bookkeeper/conf/bk_server.conf # Mount config
    ports:
      - "13181:3181"
      
    networks:
      - bookkeeper-network
    depends_on:
      - zookeeper

  redis:
    image: redis
    container_name: redis
    ports:
      - "6379:6379"
    volumes:
      - redis-data:/data
    networks:
      - bookkeeper-network
  mariadb:
    image: mariadb:12.0.2
    container_name: mariadb
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: broker
      MYSQL_USER: appuser
      MYSQL_PASSWORD: apppass
    ports:
      - "3306:3306"
    volumes:
      - mysql-data:/var/lib/mysql
    networks:
      - bookkeeper-network
  broker:
    image: backstage4j/broker:latest
    container_name: broker
    restart: unless-stopped
    environment:
      BIGBRO_BROKER_KEEPER_METADATASERVICEURI: zk://zookeeper:2181/bookkeeper/ledgers
      BIGBRO_BROKER_KEEPER_ENSEMBLESIZE: 3
      BIGBRO_BROKER_KEEPER_WRITEQUORUM: 2
      BIGBRO_BROKER_KEEPER_ACKQUORUM: 2
      SPRING_DATASOURCE_USERNAME: root
      SPRING_DATASOURCE_PASSWORD: root
      SPRING_DATASOURCE_URL: jdbc:mariadb://mariadb:3306/broker?useSSL=false&autoReconnect=true&serverTimezone=UTC&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true&useBatchMultiSend=true
      SPRING_DATA_REDIS_HOST: redis
      SPRING_DATA_REDIS_PORT: 6379
      MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE: prometheus,loggers,admin
      SERVER_IPPREFIX: 172
    ports:
      - "1571:1571"
      - "1771:1771"
    volumes:
      - mysql-data:/var/lib/mysql
    networks:
      - bookkeeper-network
    depends_on:
      - zookeeper
      - bookie
      - redis
      - mariadb

volumes:
  redis-data:
  mysql-data:
  bookie1-data:
 
networks:
  bookkeeper-network:
    driver: bridge

2. bookkeeper.conf

# Single-node optimized configuration
useHostNameAsBookieID=true
journalDirectory=/data/bookkeeper/journal
ledgerDirectories=/data/bookkeeper/ledgers
indexDirectories=/data/bookkeeper/ledgers

journalSyncData=true
journalMaxSizeMB=512
journalMaxBackups=10
journalPreAllocSizeMB=16

gcWaitTime=30000
openFileLimit=4096

# Single-node specific optimizations
numAddWorkerThreads=4
numReadWorkerThreads=4
numJournalCallbackThreads=2
metadataServiceUri=zk://zookeeper:2181/bookkeeper/ledgers

1. init.sh

#!/bin/bash
if [ ! -f "/data/bookkeeper/.metaformatted" ]; then
  echo "Running BookKeeper metaformat..."
  bin/bookkeeper shell metaformat -nonInteractive -force
  touch /data/bookkeeper/.metaformatted
fi

# Start the bookie normally
bin/bookkeeper bookie

Tag summary

Content type

Image

Digest

sha256:0c7f64b56

Size

231.9 MB

Last updated

7 months ago

docker pull backstage4j/broker