你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

适用于 JavaScript 的 Azure 事件网格命名空间客户端库 - 版本 1.0.0

Azure 事件网格 是一项基于云的服务,可提供大规模可靠的事件传送。

使用客户端库将事件发送到事件网格命名空间

关键链接:

入门

目前支持的环境

有关更多详细信息,请参阅我们的支持政策

先决条件

如果使用 Azure CLI,请将 和 <your-resource-name> 替换为<your-resource-group-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 范围。 此外,使用 Cloud Events 1.0 架构发送事件时,SDK 将使用分布式跟踪 扩展将分布式跟踪元数据添加到事件中。 和 tracestate 扩展属性的值traceparent对应于traceparent发送事件的 HTTP 请求中的 和 tracestate 标头。 如果事件已有 traceparent 扩展属性,则不会更新该事件。

Kubernetes 上的事件网格

此库已在 Kubernetes 上使用 Azure Arc 进行测试和验证。

示例

将事件发布到事件网格主题

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/logger 包文档

后续步骤

有关如何使用此库的详细示例,请查看 示例 目录。

贡献

若要为此库做出贡献,请阅读贡献指南,详细了解如何生成和测试代码。

曝光数