You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否用ServiceBusMessage发送数据,以BrokeredMessage接收?跨.NET版本适配

跨SDK兼容:Azure.Messaging.ServiceBus 发送至 WindowsAzure.ServiceBus 接收
  • 核心兼容逻辑:Azure.Messaging.ServiceBus 与 WindowsAzure.ServiceBus 基于同一Service Bus服务协议,只要保证消息核心格式一致,即可实现跨SDK收发,关键需确保消息的Body格式和属性传递兼容。

  • 发送端(.NET Core 8.0)代码示例:
    使用Azure.Messaging.ServiceBus发送时,将消息内容序列化为字节数组作为Body,避免SDK特定序列化方式,保证接收端可解析:

    using Azure.Messaging.ServiceBus;
    using System.Text;
    
    var connectionString = "你的Service Bus连接字符串";
    var queueName = "目标队列名称";
    
    await using var client = new ServiceBusClient(connectionString);
    ServiceBusSender sender = client.CreateSender(queueName);
    
    // 构造消息内容并序列化为字节数组
    var messageContent = "业务数据内容";
    byte[] bodyBytes = Encoding.UTF8.GetBytes(messageContent);
    
    var serviceBusMessage = new ServiceBusMessage(bodyBytes);
    // 添加自定义属性(可选)
    serviceBusMessage.ApplicationProperties.Add("CustomAttribute", "AttributeValue");
    
    await sender.SendMessageAsync(serviceBusMessage);
    
  • 接收端(.NET Framework 4.8)代码示例:
    使用WindowsAzure.ServiceBus的BrokeredMessage接收时,直接读取Body字节数组并反序列化:

    using Microsoft.ServiceBus.Messaging;
    using System.Text;
    
    var connectionString = "你的Service Bus连接字符串";
    var queueName = "目标队列名称";
    
    var queueClient = QueueClient.CreateFromConnectionString(connectionString, queueName);
    queueClient.OnMessage(message =>
    {
        // 读取Body字节数组并转换为字符串
        var bodyBytes = message.GetBody<byte[]>();
        var messageContent = Encoding.UTF8.GetString(bodyBytes);
    
        // 读取自定义属性(可选)
        if (message.Properties.ContainsKey("CustomAttribute"))
        {
            var attributeValue = message.Properties["CustomAttribute"].ToString();
        }
    });
    
  • 关键注意事项:

    • 统一用字节数组传递消息Body,避免依赖SDK专属的自动序列化逻辑,确保两端解析一致。
    • 自定义属性仅使用基础数据类型(字符串、数字、布尔值等),不要传递复杂对象。
    • 若使用会话消息,需保证两端均开启会话支持,且SessionId完全匹配。

内容的提问来源于stack exchange,提问作者eugen_nw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 18:43:17