@amqp-contract/core (英语)
在amqp-合同中建立和管理AMQP的核心公用事业.
这个软件包为从合同定义中建立AMQP地形(交换、队列和装订)提供了集中功能,并定义了 Logger 横跨 amqp- contract 包的接口.
📖 完整文件 ∗∗
安装
npm install @amqp-contract/core
# or
pnpm add @amqp-contract/core
# or
yarn add @amqp-contract/core
使用量
调色器
核心软件包导出一个 AmqpClient 类,处理合同中定义的所有AMQP资源的创建.
// contract.ts
import {
defineContract,
defineEventPublisher,
defineEventConsumer,
defineExchange,
defineQueue,
defineQueueBinding,
defineMessage,
} from "@amqp-contract/contract";
import { z } from "zod";
// Define resources
const ordersExchange = defineExchange("orders");
const ordersDlx = defineExchange("orders-dlx");
const orderProcessingQueue = defineQueue("order-processing", {
deadLetter: { exchange: ordersDlx },
});
// A dead-letter exchange with nothing bound to it discards every rejected
// message, so declare the DLQ and bind it. `orders-dlx` is topic, so `#`
// catches whatever routing key the message arrived with.
const orderDlq = defineQueue("order-processing-dlq");
const orderMessage = defineMessage(z.object({ orderId: z.string() }));
const orderCreatedEvent = defineEventPublisher(ordersExchange, orderMessage, {
routingKey: "order.created",
});
// Define your contract
export const contract = defineContract({
publishers: {
orderCreated: orderCreatedEvent,
},
consumers: {
processOrder: defineEventConsumer(orderCreatedEvent, orderProcessingQueue),
},
queues: { orderDlq },
bindings: { orderDlqBinding: defineQueueBinding(orderDlq, ordersDlx, { routingKey: "#" }) },
});
把合同交给一个 AmqpClient,它坚持其地形连接:
import { AmqpClient } from "@amqp-contract/core";
import { contract } from "./contract.js";
// Setup AMQP resources
const amqpClient = new AmqpClient(contract, {
urls: ["amqp://localhost"],
});
// Clean up — close() returns an AsyncResult with an empty error channel
await amqpClient.close().get();
高级频道配置选项(定制设置、预选、发布器确认),见 频道配置指南。 。 。 .
锁定接口
核心包输出 a Logger 用于执行AMQP操作自定义记录的接口 :
import type { Logger } from "@amqp-contract/core";
const logger: Logger = {
debug: (message, context) => console.debug(message, context),
info: (message, context) => console.info(message, context),
warn: (message, context) => console.warn(message, context),
error: (message, context) => console.error(message, context),
};
// Pass the logger to client or worker
import { TypedAmqpClient } from "@amqp-contract/client";
const client = await TypedAmqpClient.create({
contract,
urls: ["amqp://localhost"],
logger, // Optional: logs published messages
}).getOrThrow();
API 密码
关于完整的API文档,见 @amqp-core API 参考文献。 。 。 .
文档
📖 读取全部文件
许可证
麻省理工学院