Azure 服务总线:从对象创建 BrokeredMessage
Azure Service Bus: Creating a BrokeredMessage from Object
我们正在将应用程序从使用 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; }
}
您需要使用 [DataContract]
装饰您的消息 class,并且您希望发送的每个 属性 使用 [DataMember]
我这样定义 class:
[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
我们正在将应用程序从使用 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; }
}
您需要使用 [DataContract]
装饰您的消息 class,并且您希望发送的每个 属性 使用 [DataMember]
我这样定义 class:
[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