如何使用 nodejs 在服务总线主题中创建新订阅?
Posted
技术标签:
【中文标题】如何使用 nodejs 在服务总线主题中创建新订阅?【英文标题】:How do I create a new subscription in a service bus topic with nodejs? 【发布时间】:2021-03-20 09:41:42 【问题描述】:我想从我的后端 nodejs 解决方案创建一个新订阅
我关注了这个https://docs.microsoft.com/en-us/rest/api/servicebus/create-subscription
但我无法完成它我不明白这个 REST API 是如何工作的,我认为我错过了授权。
在邮递员中:
PUT https://management.core.windows.net/subscription ID/services/ServiceBus/Namespaces/Topics/Subscriptions/订阅名称
返回:
ForbiddenError
服务器未能对请求进行身份验证。验证证书是否有效并且与此订阅相关联。
【问题讨论】:
随请求一起发送的标头是什么? @YashKumarVerma Content-Type:application/xml 命名空间:https://namespace.servicebus.windows.net/topic x-ms-version:2012-03-01 你可以使用包@azure/arm-servicebus
来创建它:npmjs.com/package/@azure/arm-servicebus
@FaisalTaibi 你有什么更新吗?
我花了很长时间才找到documentation on this
【参考方案1】:
最简单的方法是使用@azure/service-bus:
https://www.npmjs.com/package/@azure/service-bus
NodeJS
const ServiceBusAdministrationClient = require('@azure/service-bus');
// Define connection string and related Service Bus entity names here
const connectionString =
'Endpoint=sb://<REST OF CONNECTION STRING>';
const topicName = 'yourTopic',
const subscriptionName = 'yourNewSubscription'
const serviceBusAdministrationClient = new ServiceBusAdministrationClient(connectionString);
serviceBusAdministrationClient.createSubscription('yourTopic', 'yourNewSubscription').catch((err) =>
console.log(err);
);
如果您想创建过滤器。带相关过滤器的前:
serviceBusAdministrationClient.createRule(
'yourTopic',
'yourNewSubscription',
'CorrelationFilter', //this is the name of the filter
correlationId: 'aCorrelationId'
);
【讨论】:
【参考方案2】:@azure/service-bus
的最新版本 7.0.0 提供了ServiceBusAdministrationClient
,可让您管理服务总线资源。
对于本题的问题,您可以利用ServiceBusAdministrationClient.createSubscription
方法为某个主题创建订阅。 @azure/arm-service-bus
库中也有类似的方法。
这是一个使用 ServiceBusAdministrationClient
- administrationClient.ts 的示例
有关版本 7.0.0 @azure/service-bus
的更多信息,请参阅下面的链接。
【讨论】:
以上是关于如何使用 nodejs 在服务总线主题中创建新订阅?的主要内容,如果未能解决你的问题,请参考以下文章