你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于 JavaScript 的 Azure 事件网格命名空间客户端库 - 版本 1.0.0
Azure 事件网格 是一种基于云的服务,可大规模提供可靠的事件传送。
使用客户端库将事件发送到事件网格命名空间
关键链接:
开始
当前支持的环境
- LTS 版本的 Node.js
- Safari、Chrome、Edge 和 Firefox 的最新版本。
有关详细信息,请参阅我们的 支持策略。
先决条件
如果使用 Azure CLI,请将 <your-resource-group-name>
和 <your-resource-name>
替换为自己的唯一名称:
创建事件网格主题
az eventgrid topic create --location <location> --resource-group <your-resource-group-name> --name <your-resource-name>
创建事件网格域
az eventgrid domain create --location <location> --resource-group <your-resource-group-name> --name <your-resource-name>
安装 @azure/eventgrid-namespaces
包
使用 npm
安装适用于 JavaScript 的 Azure 事件网格命名空间客户端库:
npm install @azure/eventgrid-namespaces
创建和验证命名空间客户端
若要创建用于访问事件网格命名空间 API 的客户端对象,需要事件网格主题的 endpoint
和 credential
。 事件网格命名空间客户端可以使用访问密钥。
可以在 Azure 门户 或使用以下 Azure CLI 代码片段找到事件网格主题的终结点:
az eventgrid topic show --name <your-resource-name> --resource-group <your-resource-group-name> --query "endpoint"
使用访问密钥
使用 Azure 门户 浏览到事件网格资源并检索访问密钥,或使用以下 Azure CLI 代码片段:
az eventgrid topic key list --resource-group <your-resource-group-name> --name <your-event-grid-topic-name>
获得 API 密钥和终结点后,可以使用 AzureKeyCredential
类对客户端进行身份验证,如下所示:
const { EventGridSenderClient, EventGridReceiverClient, AzureKeyCredential } = require("@azure/eventgrid-namespaces");
const eventGridSenderClient = new EventGridSenderClient(
"<endpoint>",
new AzureKeyCredential("<Access Key>")
);
const eventGridReceiverClient = new EventGridReceiverClient(
"<endpoint>",
new AzureKeyCredential("<Access Key>")
);
Azure EventGrid 提供与 Azure Active Directory(Azure AD)的集成,用于对请求进行基于标识的身份验证。 使用 Azure AD,可以使用基于角色的访问控制(RBAC)向用户、组或应用程序授予对 Azure 事件网格资源的访问权限。
若要使用 TokenCredential
将事件发送到主题或域,经过身份验证的标识应分配有“EventGrid 数据发件人”角色。
使用 @azure/identity
包,可以在开发和生产环境中无缝授权请求。 若要了解有关 Azure Active Directory 的详细信息,请参阅 @azure/identity
自述文件。
例如,可以使用 DefaultAzureCredential
来构造将使用 Azure Active Directory 进行身份验证的客户端:
const { EventGridSenderClient, EventGridReceiverClient } = require("@azure/eventgrid-namespaces");
const { DefaultAzureCredential } = require("@azure/identity");
const eventGridSenderClient = new EventGridSenderClient(
"<endpoint>",
new DefaultAzureCredential(),
"<topicName>"
);
const eventGridReceiverClient = new EventGridReceiverClient(
"<endpoint>",
new DefaultAzureCredential(),
"<topicName>",
"<subscriptionName>"
);
关键概念
发送和接收事件
EventGridSenderClient
可用于将事件发送到事件网格。 可以将其初始化为:
const eventGridSenderClient = new EventGridSenderClient(
"<endpoint>",
new AzureKeyCredential("<API Key>"),
"<topicName>"
);
EventGridReceiverClient
可用于从事件网格接收事件。 可以将其初始化为:
const eventGridReceiverClient = new EventGridReceiverClient(
"<endpoint>",
new AzureKeyCredential("<API Key>"),
"<topicName>",
"<subscriptionName>"
);
分布式跟踪和云事件
此库支持使用 @azure/core-tracing
进行分布式跟踪。 使用分布式跟踪时,此库将在 send
作期间创建范围。 此外,使用云事件 1.0 架构发送事件时,SDK 将使用 分布式跟踪扩展向事件添加分布式跟踪元数据。
traceparent
和 tracestate
扩展属性的值对应于发送事件的 HTTP 请求中的 traceparent
和 tracestate
标头。 如果事件已有 traceparent
扩展属性,则它不会更新。
Kubernetes 上的事件网格
此库已使用 Azure Arc 在Kubernetes 上进行测试和验证。
例子
将事件发布到事件网格主题
const { EventGridSenderClient, AzureKeyCredential } = require("@azure/eventgrid-namespaces");
const client = new EventGridSenderClient(
"<endpoint>",
new AzureKeyCredential("<API key>"),
"<topicName>"
);
const cloudEvent: CloudEvent = {
type: "example",
source: "https://example.com",
id: `singleEventIdV210001`,
time: new Date(),
data: {
resourceUri: "https://dummyurl.com",
},
specversion: "1.0",
};
// Publish the Cloud Event
await client.sendEvents(cloudEvent);
故障 排除
伐木
启用日志记录可能有助于发现有关故障的有用信息。 若要查看 HTTP 请求和响应的日志,请将 AZURE_LOG_LEVEL
环境变量设置为 info
。 或者,可以通过在 @azure/logger
中调用 setLogLevel
在运行时启用日志记录:
const { setLogLevel } = require("@azure/logger");
setLogLevel("info");
有关如何启用日志的更详细说明,可以查看 @azure/记录器包文档。
后续步骤
有关如何使用此库的详细示例,请查看 示例 目录。
贡献
若要参与此库,请阅读 贡献指南 了解有关如何生成和测试代码的详细信息。
相关项目
- 用于 Javascript 的 Azure SDK Microsoft