a live-stack sweep of all 36 drivers surfaced five sdk-level defects that left reads dead or the whole fleet unbootable: - drop the empty spring.main stub in the shared driver profile; the boot 4.1 binder rejects null-valued keys and every driver died at startup with a bind exception - rename the schedule enable flag to enable to match what every driver application.yml actually spells; with the old enabled key the read and custom quartz jobs were silently never scheduled - treat proto3 zero-versions as unset when reconciling registration so a driver restart re-registers instead of failing the optimistic lock with 'driver version conflict' - ignore the driver's own registration event that can be consumed before applymetadata finishes instead of logging an error - initialize jdbc/serial connection maps eagerly: the registration event handler invalidates pools and nped on a lazy-null map - ble: exclude the guava 18 pin dragged in by bluetooth-manager - kafka: use the starter (boot 4 split autoconfigurations out of the bare jar) and read the compose-provided bootstrap variable - lwm2m: pin californium to the 3.x api leshan m14 needs and configure an explicit coap endpoint - mqtt: replace the orphaned spring-integration gateway with a paho publisher so the send path exists again - boot sweep result: 36/36 drivers start, 0 errors
DC3 Driver Kafka
Overview
dc3-driver-kafka treats Apache Kafka as a streaming data source. Kafka is a publish-subscribe stream, so inbound
values are received asynchronously through a @KafkaListener and cached by message key; a point read returns the latest
cached value, and a point write produces a message to the configured topic.
Module Information
- Group ID: io.github.pnoker
- Artifact ID: dc3-driver-kafka
- Driver Name: Kafka Driver
Driver Attributes (Device-level)
| Attribute | Code | Type | Default | Description |
|---|---|---|---|---|
| Topic | topic | STRING | dc3-driver-kafka | Default topic for produce/consume |
Point Attributes
| Attribute | Code | Type | Default | Description |
|---|---|---|---|---|
| Topic | topic | STRING | Override topic (defaults to driver topic) | |
| Key | key | STRING | Message key used for produce and cache lookup |
Command Attributes (write)
| Attribute | Code | Type | Default | Description |
|---|---|---|---|---|
| Topic | topic | STRING | Topic to produce the write message to |
The module application.yml is authoritative for attribute codes, types, defaults, scheduling, health, and local
buffering. Keep this README aligned when those user-facing settings change.
Prerequisites
A reachable Kafka cluster. Point the spring.kafka.* properties (or KAFKA_BOOTSTRAP_SERVERS) at the target broker.
Connection
The broker connection is configured through Spring Boot spring.kafka.* properties in application.yml, driven by the
KAFKA_BOOTSTRAP_SERVERS environment variable.
Running Locally
make up-db
make up-dev GROUP=core
mvn -s .mvn/settings.xml -pl dc3-driver/dc3-driver-kafka -am package
java -jar dc3-driver/dc3-driver-kafka/target/dc3-driver-kafka.jar
Testing
mvn -s .mvn/settings.xml -pl dc3-driver/dc3-driver-kafka -am test
Related Modules
dc3-common-driver— Driver SDK for registration, scheduling, and RabbitMQ integration