@6river/pubcap 中文文档教程
PubCap
PubCap 旨在捕获发布到 Google Pub/Sub 主题的消息。
Install and Setup
将组件安装为开发依赖项:
npm i @sixriver/pubcap -D
Usage
Bellow 是 Mocha 框架的典型设置。
设置 before/after 挂钩以注册正在收听的主题和代码以在测试结束后清理混乱:
const pubcap = new PubCap({
});
before(async function() {
await pubcap.listen(pubsub, ['topic1', 'topic2']);
});
after(async function() {
await pubcap.close();
});
可选地设置 beforeEach 或 afterEach 挂钩从已注册主题中排出消息:
beforeEach(async function() {
await pubcap.drain();
})
使用 PubCap#messages
方法访问捕获的消息:
it('should capture messages', async function() {
const myMessages = await pubcap.messages('my-topic');
// ...
});
Getting Raw Pub/Sub messages
方法 PubCap#messages 默认返回 JSON.parse(msg.数据.toString())。 使用 Raw 解码器获取原始 Pub/Sub 消息:
import {PubCap, RAW} from '@6river/pubcap';
const pubcap = new PubCap();
// ...
const messages = await pubcap.messages('my-topic', {decoder: RAW});
Writing your own message decoder
实现 Decoder 接口以将原始消息转换为某种自定义(或类型安全)方式。
import {Message} from '@google-cloud/pubsub';
import {Decoder, PubCap} from '@6river/pubcap';
// Suppose we have some message type
interface FooMessage {
id: string;
foo: boolean;
}
// Here is our decoder
class FooDecoder implements Decoder<FooMessage> {
decode(msg: Message): FooMessage {
const foo: FooMessage = ...
return foo;
}
}
// now make the decoder and use it
const decoder = new FooDecoder();
const messages = await pubcap.messages('my-topic', {decoder});
Se also
test/pubcap.spec.ts 作为示例。
PubCap
PubCap is designed to capture messages published to Google Pub/Sub topics.
Install and Setup
Install the component as development dependency:
npm i @sixriver/pubcap -D
Usage
Bellow is the typical setup for Mocha framework.
Setup before/after hooks to register topics being listened and the code to cleanup the mess after the tests are over:
const pubcap = new PubCap({
});
before(async function() {
await pubcap.listen(pubsub, ['topic1', 'topic2']);
});
after(async function() {
await pubcap.close();
});
Optionally setup beforeEach or afterEach hook to drain messages from the registered topics:
beforeEach(async function() {
await pubcap.drain();
})
Access captured messages using PubCap#messages
method:
it('should capture messages', async function() {
const myMessages = await pubcap.messages('my-topic');
// ...
});
Getting Raw Pub/Sub messages
Method PubCap#messages by default returns the result of JSON.parse(msg.data.toString())
. Use Raw decoder to get raw Pub/Sub messages:
import {PubCap, RAW} from '@6river/pubcap';
const pubcap = new PubCap();
// ...
const messages = await pubcap.messages('my-topic', {decoder: RAW});
Writing your own message decoder
Implement the Decoder interface to get raw messages converted some custom (or typesafe) way.
import {Message} from '@google-cloud/pubsub';
import {Decoder, PubCap} from '@6river/pubcap';
// Suppose we have some message type
interface FooMessage {
id: string;
foo: boolean;
}
// Here is our decoder
class FooDecoder implements Decoder<FooMessage> {
decode(msg: Message): FooMessage {
const foo: FooMessage = ...
return foo;
}
}
// now make the decoder and use it
const decoder = new FooDecoder();
const messages = await pubcap.messages('my-topic', {decoder});
Se also
test/pubcap.spec.ts as an example.