@amqp-contract/contract
v0.10.0
Published
Contract builder for amqp-contract
Maintainers
Readme
@amqp-contract/contract
Contract builder for amqp-contract - Define type-safe AMQP messaging contracts.
Installation
pnpm add @amqp-contract/contractQuick Start
Recommended: Publisher-First / Consumer-First Patterns
For robust contract definitions with guaranteed consistency, use definePublisherFirst (for events) or defineConsumerFirst (for commands):
import {
definePublisherFirst,
defineContract,
defineExchange,
defineQueue,
defineMessage,
} from "@amqp-contract/contract";
import { z } from "zod";
// Event-oriented pattern: publisher doesn't need to know about queues
const ordersExchange = defineExchange("orders", "topic", { durable: true });
const orderMessage = defineMessage(
z.object({
orderId: z.string(),
amount: z.number(),
}),
);
const { publisher: orderCreatedPublisher, createConsumer: createOrderCreatedConsumer } =
definePublisherFirst(ordersExchange, orderMessage, { routingKey: "order.created" });
// Multiple queues can consume the same event
const orderQueue = defineQueue("order-processing", { durable: true });
const { consumer, binding } = createOrderCreatedConsumer(orderQueue);
// For topic exchanges, consumers can override with their own pattern
const analyticsQueue = defineQueue("analytics", { durable: true });
const { consumer: analyticsConsumer, binding: analyticsBinding } = createOrderCreatedConsumer(
analyticsQueue,
"order.*",
); // Subscribe to all order events
const contract = defineContract({
exchanges: { orders: ordersExchange },
queues: { orderQueue, analyticsQueue },
bindings: { orderBinding: binding, analyticsBinding },
publishers: { orderCreated: orderCreatedPublisher },
consumers: {
processOrder: consumer,
trackOrders: analyticsConsumer,
},
});Benefits:
- ✅ Guaranteed message schema consistency between publishers and consumers
- ✅ Routing key validation and type safety
- ✅ Full type safety with TypeScript inference
- ✅ Event-oriented (publisher-first) and command-oriented (consumer-first) patterns
- ✅ Flexible routing key patterns for topic exchanges
Documentation
📖 Read the full documentation →
License
MIT
