普贝
这是普布Sub工厂的通称 揭露一种听觉和放电方法.
页:1: 今天,仅限 Google Cloud PubSub (Google Cloud PubSub) (英语) 已添加.
安装
npm install --save @algoan/pubsub
使用量
Google Cloud PubSub (Google Cloud PubSub) (英语)
运行测试
要进行测试或尝试 PubSubFactory 类,您需要有一个google 账户并安装了 gcloud sdk.
然后,安装 Google PubSub 模拟器,运行 :
gcloud components install pubsub-emulator
gcloud components install beta
gcloud components update
开始运行测试 :
npm test
将推出Google PubSub模拟器 google-pubsub 模拟器 图书馆.
示例
使用 Google 云创建 PubSub 实例 :
import { EmittedMessage, GCPubSub, PubSubFactory, Transport } from '@algoan/pubsub'
const pubsub: GCPubSub = PubSubFactory.create({
transport: Transport.GOOGLE_PUBSUB,
options: {
projectId: 'test',
// And all other Google PubSub properties
}
});
const topicName: string = 'some_topic';
await pubsub.listen(topicName, {
autoAck: true,
onMessage: (data: EmittedMessage<{foo: string}>) => {
console.log(data.parsedData); // { foo: 'bar', time: {Date.now}, _eventName: 'some_topic' }
// do whatever you want. The message has already been acknowledged
},
onError: (error: Error) => {
// Handle error as you wish
}
});
await pubsub.emit(topicName, { foo: 'bar' });
捐款
感谢您未来的贡献 请跟随 这些指示 在启动拉力请求之前!
API 密码
PubSubFactory.create({ transport, options })
唯一的静态方法 PubSubFactory 课。 它根据具体情况启动一个新的PubSub实例 transport。默认情况下,它连接到 Google Cloud PubSub (Google Cloud PubSub) (英语)。 。 。 .
transport:用PubSub技术. 仅GOOGLE_PUBSUB现在已经可以使用.options: 与运输有关的选项.- 若为
transport === Transport.GOOGLE_PUBSUB,然后来看看 谷歌 Cloud PubSub 配置客户端。 。 。 . debug: 如果设置为真, 显示日志 。 它使用一个 皮诺伐木机 财务报告和审定财务报表 皮诺色 若为NODE_ENV不等同于production。 。 。 .pinoOptions: 如果debug设置为真,设置为 皮诺日志选项默认为level: debug财务报告和审定财务报表prettyPrint: true若为NODE_ENV不等同于production。 。 。 .topicsPrefix: 在所有创建的主题中添加前缀. 示例topicsPrefix: 'my-topic',所有主题都将从my-topic+{your topic name}。 。 。 .topicsSeparator: 自定义主题前缀和主题名之间的分隔符. 示例topicsSeparator: '-',所有的主题将是{topic prefix}-{your topic name} (default to '+')。 。 。 .subscriptionsPrefix: 在所有已创建的订阅中添加前缀. 示例subscriptionsPrefix: 'my-sub',所有订阅从my-sub%{your topic name}。 。 。 .subscriptionsSeparator: 自定义订阅和话题名之间的分隔符。 示例subscriptionsSeparator: '-',所有订阅将{subscription prefix}-{your topic name} (default to '%')。 。 。 .namespace: 添加命名空间属性到 信件属性 当发表一个话题时.environment: 将环境属性添加到 信件属性 当发表一个话题时.
- 若为
pubsub.listen(event, opts)
听听具体事件.
页:1: 它只使用 谷歌云订阅拉 现在就送货.
event:活动名称.opts: 与听众方法有关的选项onMessage: 接收消息时调用的方法onError: 发生错误时调用的方法options: 与所选运输有关的选项
如果选择的运输方式是 Google Cloud PubSub, 那么 options 将:
autoAck: 一收到事件(默认为true(中文(简体) )subscriptionOptions: 与创建的订阅有关的选项 :name: 自定义订阅名称。 默认 :event(也与题目名称等同)get: 适用于getSubscription方法(请查看 订阅选项(中文(简体) )sub: 适用于订阅实例的选项(另见setOptions方法(中文(简体) )create: 适用于createSubscription方法(请查看 创建订阅选项(中文(简体) )deadLetterTopicName: 死信题名的订阅覆盖(见 死信主题(中文(简体) )
topicOptions: 适用于所创建主题的选项(请查看 专题选项(中文(简体) )topicName:设置主题名. 默认情况下,它使用带有前缀的默认名称.
pubsub.emit(event, payload, opts)
释放带有有效载荷的特定事件. 如果您在设置时添加了命名空间或环境, 它会在信件中添加属性 PubSubFactory 课。 也增加了一个 _eventName (单位:千美元) time 释放的属性 payload。 。 。 .
event:要发射的事件名称.payload: 寄出有效载荷. 由Google缓冲,然后由Google解析 听着 方法.opts: 与 Emit 方法有关的选项metadata: 自定义添加到信件中的元数据options: 与所选运输有关的选项
如果选择的运输方式是 Google Cloud PubSub, 那么 options 将:
topicOptions: 适用于所创建主题的选项(请查看 专题选项(中文(简体) )publishOptions: 发布主题创建后设定的选项. 参见 发布选项messageOptions: 给消息添加了额外消息选项. 参见 信件选项
pubsub.unsubscribe(event)
停止给定订阅的服务器连接 .
event: 停止倾听的活动名称.
死信主题
何时 deadLetterOptions 设置在构建器选项中,库自动:
- 创建死字母主题( 如果不存在)
- 创建关于死信题的排入订阅( 防止 GCP 丢弃未发送的消息)
- 赠款
roles/pubsub.publishergCP Pub/Sub服务账户的死信题 - 赠款
roles/pubsub.subscribergCP Pub/Sub服务账户的原始订阅 - 应用
deadLetterPolicy创建的订阅
这个设定只会发生 每新订阅一次 重新连接到已有的订阅费用为零.
方式1:每个订阅的孤立的死字题(推荐给多消费者系统)
奥米 deadLetterTopicName。每个订阅自动获得自己的 <subscriptionName>-deadletter ,所以来自不同消费者的失败消息是孤立的,可以独立地重播.
const pubsub: GCPubSub = PubSubFactory.create({
transport: Transport.GOOGLE_PUBSUB,
options: {
projectId: 'my-project',
deadLetterOptions: {
maxDeliveryAttempts: 10, // optional, defaults to 5
},
},
});
// Each listen() call creates its own isolated dead-letter topic:
// - "my-orders-sub-deadletter" for the first subscription
// - "my-payments-sub-deadletter" for the second
await pubsub.listen('my-orders-sub');
await pubsub.listen('my-payments-sub');
模式2:共享的死字母主题(所有订阅的单 DLT)
提供 deadLetterTopicName 以将所有失败的消息传送到一个共享的话题。 全球协商进程中必须已经存在这一专题.
const pubsub: GCPubSub = PubSubFactory.create({
transport: Transport.GOOGLE_PUBSUB,
options: {
projectId: 'my-project',
deadLetterOptions: {
deadLetterTopicName: 'projects/my-project/topics/my-dead-letter', // fully-qualified or short name
maxDeliveryAttempts: 5,
},
},
});
await pubsub.listen('my-orders-sub'); // routes to "my-dead-letter"
await pubsub.listen('my-payments-sub'); // routes to "my-dead-letter"
模式 3: 订阅覆盖
覆盖一个特定的订阅方式的死字题 subscriptionOptions.deadLetterTopicName。返回实例一级 deadLetterTopicName,然后如果两者都未设定,则自动删除.
await pubsub.listen('my-special-sub', {
options: {
subscriptionOptions: {
deadLetterTopicName: 'projects/my-project/topics/special-dead-letter',
},
},
});
配置排水口订阅(例如保留电文)
默认情况下,在死字题上创建的排水层订阅会使用Google Cloud默认——特别是a 7天时间 保留信件。 提供 drainSubscriptionOptions 以覆盖 CreateSubscriptionOptions 当创建下水道订阅时使用(例如,将死字留言保存最多31天,以便有更多的时间检查和重放).
const pubsub: GCPubSub = PubSubFactory.create({
transport: Transport.GOOGLE_PUBSUB,
options: {
projectId: 'my-project',
deadLetterOptions: {
drainSubscriptionOptions: {
messageRetentionDuration: { seconds: 2678400 }, // 31 days (max)
},
},
},
});
await pubsub.listen('my-orders-sub');
和其他的死信设置一样,这只有在排水口订阅时才适用 创建 ——已经存在的排水量认购未受影响.
没有死字题
若为 deadLetterOptions 没有设置,没有创建死信资源,也没有进行IAM呼叫——完全后向兼容.
const pubsub: GCPubSub = PubSubFactory.create({
transport: Transport.GOOGLE_PUBSUB,
options: {
projectId: 'my-project',
// no deadLetterOptions — existing behavior unchanged
},
});