The documentation you are viewing is for Dapr v1.8 which is an older version of Dapr. For up-to-date documentation, see the latest version.
How-To: 使用输入绑定来触发应用程序
使用绑定,代码可以被来自不同资源的传入事件触发,这些事件可以是任何内容:队列、消息传递管道、云服务、文件系统等。
这对于事件驱动的处理,数据管道或只是对事件作出反应并进一步处理都很理想。
Dapr 绑定允许您 :
- 接收不包含特定 SDK 或库的事件
- 在不更改代码的情况下替换绑定
- 关注业务逻辑而不是事件资源实现
For more info on bindings, read this overview.
有关展示绑定的快速入门示例,请访问此 链接。
1. 1. 创建绑定
输入绑定表示 Dapr 用于读取事件并推送到应用程序的事件资源。
就本指南的目的,我们会使用 Kafka 绑定。 You can find a list of the different binding specs here.
创建以下 YAML 文件,名为 binding.yaml,并将其保存到应用程序的 components
子文件夹中。 (使用具有 --components-path
标记 的 dapr run
命令来指向自定义组件目录)
注: 在 Kubernetes 中运行时,使用 kubectl apply -f binding.yaml
将此文件应用于您的集群
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: myevent
namespace: default
spec:
type: bindings.kafka
version: v1
metadata:
- name: topics
value: topic1
- name: brokers
value: localhost:9092
- name: consumerGroup
value: group1
在这里,创建一个新的名称为 myevent
的绑定组件。
在 metadata
部分中,配置 Kafka 相关属性,如要监听的topics,代理或者更多。
2. 监听传入事件
现在配置您的应用程序来接收传入事件。 如果使用 HTTP ,那么需要监听在文件 metadata.name
中指定的绑定名称所对应的POST
终结点。 在此示例中,是 myevent
。
以下示例演示了在 Node.js 中您该如何监听事件,但这适用于任何编程语言
const express = require('express')
const bodyParser = require('body-parser')
const app = express()
app.use(bodyParser.json())
const port = 3000
app.post('/myevent', (req, res) => {
console.log(req.body)
res.status(200).send()
})
app.listen(port, () => console.log(`Kafka consumer app listening on port ${port}!`))
确认事件
为了告诉 Dapr 您成功处理了应用程序中的事件,请从 http 处理程序 返回 200 OK
响应。
res.status(200).send()
拒绝事件
为了告知 Dapr 事件未在应用程序中正确处理事件并将其调度为重新交付,请返回与 200 OK
不同的响应。 例如, 500 Error
。
res.status(500).send()
事件传递保证
事件传递保证由绑定实现控制。 根据绑定实现,事件传递可以正好一次或至少一次。
参考资料
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.