Azure Service Bus能否向特定订阅发送消息?REST API/C# SDK支持吗?
向Azure Service Bus特定订阅发送消息的实现方式
可以直接向主题下的特定订阅发送消息,无需先发送到主题再通过规则过滤,以下是具体实现方式:
使用C# SDK(Azure.Messaging.ServiceBus)
借助最新的Azure.Messaging.ServiceBus NuGet包,可通过ServiceBusClient直接创建指向指定订阅的发送者,示例代码如下:
using Azure.Messaging.ServiceBus; // 替换为你的Service Bus连接字符串、主题名和目标订阅名 string connectionString = "<Service Bus连接字符串>"; string topicName = "<主题名称>"; string subscriptionName = "<目标订阅名称>"; // 初始化客户端和订阅发送者 await using var client = new ServiceBusClient(connectionString); ServiceBusSender subscriptionSender = client.CreateSender(topicName, subscriptionName); // 构造并发送消息 var targetMessage = new ServiceBusMessage("仅发送给指定订阅的消息内容"); await subscriptionSender.SendMessageAsync(targetMessage);
使用REST API
通过Azure Service Bus的REST API调用专属端点,即可直接向订阅发送消息,核心参数说明:
- 请求方法:
POST - 请求端点:
https://<你的Service Bus命名空间>.servicebus.windows.net/<主题名>/subscriptions/<订阅名>/messages - 必填请求头:
Authorization:使用SAS令牌或Azure AD令牌完成身份验证Content-Type:application/atom+xml;type=entry;charset=utf-8
- 请求体示例(XML格式):
<entry xmlns="http://www.w3.org/2005/Atom"> <content type="application/xml"> <Message xmlns="http://schemas.microsoft.com/netservices/2010/10/servicebus/connect"> <Body>仅发送给指定订阅的消息内容</Body> </Message> </content> </entry>
内容的提问来源于stack exchange,提问作者Johnny
相关产品推荐
相关产品推荐

