Momento推出Momento Topics服务
Momento最近推出了Momento Topics,这是一个支持发布-订阅通信模式的无服务器事件消息系统。该服务旨在为事件驱动架构提供消息管道。未来的功能发布将支持直接调用AWS Lambda以及由Momento Cache触发的变更数据捕获事件。
Momento的目标与产品
Momento的目标是帮助开发者快速编写可靠且健壮的事件驱动应用。其首款产品Momento Cache于2022年发布,是一款用于数据库和应用场景的无服务器缓存,被无服务器倡导者Alex DeBrie称为“21世纪的无服务器、云时代的缓存”。Momento Topics是Momento团队的第二款服务,设计用于将发布的消息立即传送给当前所有订阅者,随后消息将被丢弃。Momento建议在低延迟消息传递优先于偶尔消息丢失的场景中使用此服务。
Momento Topics的主要优势
Momento Topics的主要优势包括:
- 简化的定价模式,提供50GB的免费层级
- 无需配置的主题管理
- 大规模下的毫秒级尾部延迟
使用Momento Topics
要使用Momento Topics,应用程序需要安装Momento SDK,该SDK支持包括Node.js、.NET和Java在内的八种编程语言和框架。由于Momento Cache支持Momento Topics,应用程序需要通过SDK连接到现有的缓存实例才能发布或订阅消息。以下是一个在Node.js中设置客户端以发布的代码片段:
import {
TopicClient,
TopicPublish,
Configurations,
CredentialProvider,
} from '@gomomento/sdk';
const momento = new TopicClient({
configuration: Configurations.Laptop.v1(),
credentialProvider: CredentialProvider.fromEnvironmentVariable({
environmentVariableName: 'MOMENTO_AUTH_TOKEN',
}),
});
const publishResponse = await momento.publish(cacheName, topicName, value);
if (publishResponse instanceof TopicPublish.Success) {
console.log('Value published successfully!');
} else {
console.log(`Error publishing value: ${publishResponse.toString()}`);
}订阅的代码类似,但需要注册一个回调函数以处理新到达的项目:
const response = await momento.subscribe(cacheName, topicName, {
onItem: handleItem,
onError: handleError,
});
function handleItem(item: TopicItem) {
console.log('Item received from topic subscription; %s', item);
}
function handleError(error: TopicSubscribe.Error) {
console.log(`Error received from topic subscription; ${error.toString()}`);
}未来功能增强
Momento团队还计划通过两种功能增强Momento Topics的订阅功能:
- Executors:允许Lambda函数直接作为主题的订阅者被调用。
- Triggers:允许基于Momento Cache中数据变化的订阅触发。
与其他服务的比较
Momento Topics与AWS Eventbridge、Azure Event Grid和GCP Eventarc类似,专注于通过事件实现解耦的应用集成。尽管它提供了与其他服务类似的无服务器和低配置开销,但在死信/事件传递能力上有所不同。其他服务不保证事件传递顺序并使用死信机制,而Momento Topics提供带有序列号的消息,并旨在支持从检查点序列号初始化订阅。另一个关键区别是Momento Topics原生支持的发布者和订阅者数量。尽管AWS Eventbridge、Azure Event Grid和GCP Eventarc与各自的生态系统有集成,Momento Topics仅宣布了与AWS Lambda和Momento Cache的未来集成。
进一步信息
有关如何开始使用Momento Topics的更多信息,可以访问其文档页面。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。