Contributing to KubeMQ Java SDK
March 10, 2026 ยท View on GitHub
Thank you for your interest in contributing to the KubeMQ Java SDK.
Development Setup
Prerequisites
- JDK 11 or later
- Maven 3.8+
- A running KubeMQ server (for integration tests)
Building
cd kubemq-java
mvn clean install -DskipITs
Running Tests
Unit tests:
mvn test
Integration tests (requires running KubeMQ server):
mvn verify -Dkubemq.address=localhost:50000
Commit Message Format
We recommend (but do not enforce) Conventional Commits format:
type(scope): description
[optional body]
[optional footer(s)]
Types
feat-- New feature (MINOR version bump)fix-- Bug fix (PATCH version bump)docs-- Documentation changestest-- Adding or updating testschore-- Build process, dependency updatesrefactor-- Code changes that neither fix a bug nor add a featureperf-- Performance improvements
Scope (optional)
pubsub-- Events and Events Storequeues-- Queue operationscq-- Commands and Queriesclient-- KubeMQClient coretransport-- gRPC/connection layer
Examples
feat(queues): add batch send support for queue messages
fix(pubsub): handle reconnection during events store subscription
docs: update README with TLS configuration examples
chore: upgrade gRPC to 1.75.0
Breaking Changes
Append ! after type or include BREAKING CHANGE: in the footer:
feat(client)!: change KubeMQClient builder API
BREAKING CHANGE: `address()` method renamed to `serverAddress()`
Pull Requests
- Create a feature branch from
main - Make your changes
- Ensure all tests pass (
mvn verify -DskipITs) - Submit a pull request with a clear description of changes
Changelog
All user-visible changes must be recorded in CHANGELOG.md following the
Keep a Changelog format. Add your entry under the
[Unreleased] section.
When recording a deprecation in the CHANGELOG, use this template:
### Deprecated
- `PubSubClient.sendEventsMessage()` -- use `PubSubClient.publishEvent()` instead. Removal planned for 3.0.
Deprecation Policy
Rules
-
Annotation: Every deprecated public API must carry:
@Deprecated(since = "X.Y", forRemoval = true)Plus a Javadoc
@deprecatedtag naming the replacement:/** * @deprecated Since 2.2. Use {@link NewClass#newMethod()} instead. * Scheduled for removal in 3.0. */ -
Notice period: Minimum 2 minor versions OR 6 months (whichever is longer) before removal.
-
Functionality: Deprecated APIs continue to function identically until removal. No behavior changes in deprecated code paths.
-
CHANGELOG: Every deprecation must have a CHANGELOG entry under a "Deprecated" section.
-
Migration guide: When a deprecated API is removed in a major version, the migration guide (MIGRATION.md) must list:
- The removed API
- The replacement API
- A code example showing the migration
Deprecation Lifecycle
v2.1: API introduced
v2.3: API deprecated (@Deprecated annotation + CHANGELOG entry)
v2.4: Deprecated API still works, warning in Javadoc
v3.0: API removed (listed in MIGRATION.md)