【问题标题】:Azure Service Bus: Creating a BrokeredMessage from ObjectAzure 服务总线:从对象创建 BrokeredMessage
【发布时间】:2019-04-17 17:47:52
【问题描述】:

我们正在将应用从使用 MSMQ 转换为 Azure 服务总线。我们有一个如下所示的对象(消息、类型):

[Serializable]
public class LeadSubmissionMessage
{
    public long LeadId { get; set; }
    public long UserId { get; set; }
    public DateTime DateTime { get; set; }
}

在从对象创建 BrokeredMessage 时,起初我认为它可以正常工作,因为它已编译并且没有引发运行时错误,但随后服务总线中没有显示任何消息。所以当我在调试中观看它时,我意识到它实际上并没有序列化对象。

BrokeredMessage brokeredMessage = new BrokeredMessage(message); 

在查看other similar posts 时,我尝试了这个:

BrokeredMessage brokeredMessage = new BrokeredMessage(message, new DataContractSerializer(typeof(LeadSubmissionMessage)));  

但结果是一样的。

我需要做什么才能使对象真正成为提交给消息的 xml 字符串?

编辑:

也试过了。结果相同:

[DataContract]
[Serializable]
public class LeadSubmissionMessage
{
    [DataMember]
    public long LeadId { get; set; }
    [DataMember]
    public long UserId { get; set; }
    [DataMember]
    public DateTime DateTime { get; set; }
}

【问题讨论】:

    标签: c# azure serialization azureservicebus


    【解决方案1】:

    我这样定义类:

    [DataContract]
    [Serializable]
    public class EventMessageDto
    {
        [DataMember]
        public Guid EventId { get; set; }
    
        [DataMember]
        public string EventType { get; set; }
    
        [DataMember]
        public string EventData { get; set; }
    }
    

    然后用这个创建消息:

    var message = new BrokeredMessage(eventMessageDto, new DataContractSerializer(typeof(EventMessageDto)));
    

    我正在使用这个 nuget 包:WindowsAzure.ServiceBus.3.3.1

    【讨论】:

    • 谢谢丹尼尔!时间太长了,我不记得这个问题的细节或者我是如何解决它的。但我很高兴您找到了解决方案并使其正常工作,并感谢您添加答案。
    【解决方案2】:

    您需要使用[DataContract] 装饰您的消息类,并使用[DataMember] 装饰您要发送的每个属性

    【讨论】:

    • 见上面的编辑。你是这个意思吗?我试过了,但我得到了同样的结果。
    • @CaseyCrookston 是的,这就是我的意思。如果您仍然没有收到您的消息,则问题可能出在其他地方,而不是序列化。调试器无法显示已发送消息的某些属性的事实是预期的 - DeliveryCount 并且只会在接收时初始化。如果您只是发送一个字符串,而不是您的消息类怎么办 - 它会去某个地方吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    • 2017-07-12
    • 2018-06-27
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多