你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本文提供分步说明,以 CloudEvents JSON 格式 将事件发布到 Azure 事件网格,并使用推送传送模型传送这些事件。 具体来说,你会将事件发布到事件网格中的命名空间主题,然后将这些事件从事件订阅推送到 Webhook 处理程序目标。 有关推送传递模型的详细信息,请参阅 推送传递概述。
注释
Azure 事件网格命名空间目前支持共享访问签名(SAS)令牌和访问密钥身份验证。
如果没有 Azure 帐户,请在开始前创建一个免费帐户。
创建事件网格命名空间
事件网格命名空间提供一个用户定义的终结点,可在其中发布事件。 以下示例使用 Azure Cloud Shell 中的 Bash 在资源组中创建命名空间。 命名空间名称必须唯一,因为它是域名系统(DNS)条目的一部分。
导航到 Azure 门户。
在主题的搜索栏中,键入
Event Grid Namespaces
并从Event Grid Namespaces
结果中进行选择。在“创建命名空间”页上执行以下步骤:
在 “部署 ”页上,选择“成功部署后 转到资源 ”。
获取访问密钥
在命名空间中创建主题
创建一个主题,用于保存发布到命名空间终结点的所有事件。
创建消息终结点
在订阅事件之前,让我们为事件消息创建终结点。 通常情况下,终结点基于事件数据执行操作。 为了简化此快速入门,将部署用于显示事件消息的预生成 Web 应用。 所部署的解决方案包括应用服务计划、应用服务 Web 应用和 GitHub 中的源代码。
选择“部署到 Azure”将解决方案部署到你的订阅。
在“自定义部署”页上执行以下步骤:
对于“资源组”,请选择你在创建存储帐户时创建的资源组。 这样就可以在完成本教程后,通过删除资源组来更轻松地进行清理。
对于“站点名称”,请输入 Web 应用的名称。
对于“托管计划名称”,请输入用于托管 Web 应用的应用服务计划的名称。
选择“查看 + 创建”。
在“查看 + 创建”页面上,选择“创建”。
部署需要数分钟才能完成。 在“部署”页上,选择“转到资源组”。
在“资源组”页上,在资源列表中,选择你创建的 Web 应用。 在此列表中还可以看到应用服务计划和存储帐户。
在 Web 应用的“应用服务”页上,选择相应的 URL 以导航到该网站。 URL 应采用以下格式:
https://<your-site-name>.azurewebsites.net
。确认你可以看到站点,但尚未有任何事件发布到站点。
重要
使 Azure 事件网格查看器窗口保持打开状态,以便在发布事件时查看这些事件。
创建事件订阅
创建事件订阅,将其传递模式设置为 “推送”,该模式支持 推送传递。
- 在使“事件中心命名空间”页面保持打开的情况下,切换到打开了“事件网格命名空间”页面的标签页或窗口。
- 在“事件网格命名空间”页面上,选择左侧菜单中的“主题”。
- 在 “主题” 页上,选择在上一步中创建的主题。
- 在命令栏上选择 “+ 订阅 ”。
- 在“创建事件订阅”页上执行以下步骤:
在“ 基本 ”选项卡中,输入事件订阅 的名称 。
为事件发送模式选择“推送”。
对于“终结点类型”,选择“Webhook”。
选择“配置终结点”。
在 “WebHook ”页上,指定终结点(例如:
https://spegridsite0520.azurewebsites.net/api/updates
),如以下示例所示,然后选择“ 确认”选择。返回“ 创建订阅 ”页,选择“ 创建”。
将事件发送到主题
现在,按照本节中的步骤将示例事件发送到命名空间主题。
声明变量
在 Azure 门户中启动 Cloud Shell。 切换到 Bash。
运行以下命令以声明一个变量来保存资源组名称。 将
RESOUREGROUPNAME
替换为 Azure 资源组的名称。resource_group=RESOURCEGROUPNAME
在 Cloud Shell 中运行以下命令,声明一个用于保存命名空间名称的变量。 将
NAMESPACENAME
替换为事件网格主题的命名空间。namespace=NAMESPACENAME
运行以下命令,声明变量以保存前面记录的访问键值。 将
ACCESSKEY
替换为事件网格命名空间的访问密钥。key=ACCESSKEY
在 Cloud Shell 中运行以下命令,声明一个用于保存命名空间名称的变量。
topic=TOPICNAME
发布活动
检索命名空间主机名。 你将使用该主机名来编写要将事件发送到的命名空间 HTTP 终结点。 API 版本
2023-06-01-preview
首次可用以下操作。 还可以从 Azure 门户中事件网格命名空间的 “概述 ”页获取主机名。publish_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic:publish?api-version=2023-06-01-preview
创建符合 CloudEvents 的示例事件:
event=' { "specversion": "1.0", "id": "'"$RANDOM"'", "type": "com.yourcompany.order.ordercreatedV2", "source" : "/mycontext", "subject": "orders/O-234595", "time": "'`date +%Y-%m-%dT%H:%M:%SZ`'", "datacontenttype" : "application/json", "data":{ "orderId": "O-234595", "url": "https://yourcompany.com/orders/o-234595"}} '
data
元素是事件的有效负载。 可以将任何格式正确的 JSON 置于此字段中。 有关可以在事件中的属性(也称为上下文属性)的详细信息,请参阅 CloudEvents 规范。使用 CURL 将事件发送到主题。 CURL 是发送 HTTP 请求的实用工具。
curl -X POST -H "Content-Type: application/cloudevents+json" -H "Authorization:SharedAccessKey $key" -d "$event" $publish_operation_uri
验证 Azure 事件网格查看器是否收到了该事件
验证 Azure 事件网格查看器 Web 应用是否显示从事件网格接收的事件。
相关内容
在本快速入门中,你使用了 Webhook 作为事件处理程序。 有关使用 Azure 事件中心作为事件处理程序的快速入门,请参阅 使用命名空间主题将事件传递到 Azure 事件中心。