camel-component-jms
JMS component for rust-camel. Supports ActiveMQ Classic and ActiveMQ Artemis.
URI Format
jms:queue:name[?param=value&...]
jms:topic:name[?param=value&...]
Parameters
| Parameter | Default | Description |
|---|---|---|
brokerUrl |
tcp://localhost:61616 |
Broker connection URL |
brokerType |
activemq |
activemq or artemis |
username |
— | Broker username |
password |
— | Broker password |
Quick Start
use JmsComponent;
ctx.register_component;
// Consumer
let route = from
.to
.build?;
// Producer
let route = from
.set_body
.to
.build?;
Artemis
.to
How It Works
The component manages a Java bridge process (jlink native binary) internally:
- On first use, downloads the bridge binary from GitHub releases (SHA256-verified, cached at
~/.cache/rust-camel/jms-bridge/). - Spawns the bridge with broker config passed via environment variables.
- Reads the ephemeral gRPC port from stdout (
{"status":"ready","port":N}). - Polls the health endpoint until ready, then routes messages over gRPC.
No Java runtime is required on the host — the bridge is a native binary.
Environment Variables
| Variable | Description |
|---|---|
CAMEL_JMS_BRIDGE_BINARY_PATH |
Development override — absolute path to a local jms-bridge binary; skips download entirely |
CAMEL_JMS_BRIDGE_RELEASE_URL |
Override release download URL (must be https://github.com/**) |
Development Setup
Prerequisites
- Docker (daemon running)
- NixOS:
programs.nix-ld.enable = truemust be set in your NixOS configuration - Linux: glibc ≥ 2.34 (Ubuntu 22.04+, Debian 12+, RHEL 9+)
Building the JMS Bridge
The bridge binary is built using Docker (no Java required on your host):
# One-time build (~5–8 min first time, faster on subsequent runs)
# The binary is auto-detected. No env vars needed:
Override
If you need to use a custom binary:
Known Limitations
- IBM MQ not supported (planned for a future release)
- No durable topic subscribers yet