docs

Dapr用户文档

View project on GitHub

发布/订阅消息

通过Dapr开发者可设计使用消息代理的发布/订阅模式应用,这样事件的消费者与生产者彼此解耦,发送与接收消息之间的通信通过命名空间隔离(通常为主题)。

这允许事件生产者发送消息到未运行的消费者,消费者通过订阅主题的方式来接收消息。

Dapr提供至少一次的消息传递保证,以及可与多个消息代理集成。 这些实现时插件化的,与Dapr运行时独立components-contrib.

发布/订阅 API

有关发布/订阅的API,可在规范中查看

行为及保证

Dapr确保至少一次的消息传递。这意味着,当一个应用发布一条消息到主题时,可以假设任何订阅者都可以至少一次成功处理该消息, 也就是订阅者终结点返回200 HTTP应答,或者gRPC没有错误返回。

处理消费者组以及组内多个实例的责任都由Dapr来完成。

应用ID

Dapr具有id的概念,它在Kubernetes中通过dapr.io/id注释来表示,在Dapr命令行中通过app-id参数指定。Dapr中每个应用都必须具有一个ID。

当具有相同应用ID的多个实例订阅一个主题时,Dapr将确保传递的消息只会到其中的一个实例。如果两个具有不同ID的应用同时订阅一个主题,每一个应用中的至少一个实例将会收到消息。

云事件

Dapr遵循云事件0.3规范 ,将发送到主题的任何负载都由一个云事件邮封封装。

以下云事件规范中的字段已被Dapr实现:

  • id
  • source
  • specversion
  • type
  • datacontenttype (可选)