Producing messages
Build the canonical envelope with EnvelopeCodec.make, encode it to JSON with
EnvelopeCodec.encode, then publish the bytes with your own broker client.
import com.babelqueue.*;
import java.util.Map;
Envelope env = EnvelopeCodec.make(
"urn:babel:orders:created",
Map.of("order_id", 1042L, "amount", 99.90),
"orders",
null);
String body = EnvelopeCodec.encode(env); // compact UTF-8 JSON
// jedis.rpush("queues:orders", body);
// / channel.basicPublish("", "orders", props, body.getBytes(StandardCharsets.UTF_8));
encode produces the canonical schema_version: 1 envelope, with meta.lang
set to "java":
{
"job": "urn:babel:orders:created",
"trace_id": "7b3f9c2a-e41d-4f88-9b2a-1c0d5e6f7a8b",
"data": { "order_id": 1042, "amount": 99.90 },
"meta": { "id": "f1e2d3c4-b5a6-4789-90ab-cdef01234567", "queue": "orders", "lang": "java", "schema_version": 1, "created_at": 1749132727000 },
"attempts": 0
}
Next: Consuming messages.