Bounded NATS protocol and JetStream durable messaging SDK powered by MoonBit.
npm run toolchain -- --moon "C:\path\to\moon-sdk\bin\moon.exe"
npm run toolchain -- --checkgit clone https://github.com/bzhangui/moonjet.git
cd moonjet
npm run build
node scripts/install-server.mjs
npm run demo
npm run demo:workerimport {Client} from './platform/client.mjs';
const client = await Client.connect('nats://127.0.0.1:4222');
try {
await client.createStream('ORDERS', 'orders.>');
await client.createConsumer('ORDERS', 'WORKER', 'orders.>');
const receipt = await client.publish('orders.created', Buffer.from('order-42'), {
messageId: 'order-42-created', // 同一事件重试保持 ID 不变
});
for (const message of await client.fetch('ORDERS', 'WORKER', {batch: 1})) {
console.log(message.metadata.stream_sequence, message.data.toString());
// 业务操作先以稳定 ID 去重,再确认。
await message.ack(); // 等待服务器确认收到 ACK
}
console.log(receipt.sequence); // 精确十进制字符串
} finally { client.close(); }const client = await Client.connect('tls://nats.example.com:4222', {
token: process.env.NATS_TOKEN,
// 私有 CA 可指定 ca;不能关闭证书校验。
});moon run examples/core --target native
npm run validate
npm test
node scripts/package.mjs