我们有以下围绕 Azure 服务总线客户端的包装器:
public virtual void SendMessage(object bodyObject)
{
var brokeredMessage =
_messageBodySerializer.SerializeMessageBody(bodyObject);
_queueClient.Send(brokeredMessage);
}
包括SerializeMessageBody
:
public BrokeredMessage SerializeMessageBody(object bodyObject)
{
var brokeredMessage = new BrokeredMessage(bodyObject);
brokeredMessage.Properties[MESSAGE_TYPE_PROPERTY_KEY] =
bodyObject.GetType().AssemblyQualifiedName;
return brokeredMessage;
}
我编写了一个集成测试,通过运行然后使用Service Bus Explorer 2.0SendMessage
查看消息内容来检查它是否有效。我们这样做是为了确保我们可以使用该工具来修复和重新发送消息以修改 XML。我发送的消息如下所示:
[DataContract]
public class TestServiceBusMessage
{
[DataMember]
public Guid ExternalIdentifier { get; set; }
[DataMember]
public int Identifier { get; set; }
[DataMember]
public string Name { get; set; }
}
问题是; 当在工具上查看消息正文时,它看起来不像 XML,而是如下所示:
@TestServiceBusMessageWhttp://schemas.datacontract.org/2004/07/IntegrationTests.Common.Azure.ServiceBus i)http://www.w3.org/2001/XMLSchema-instance@ExternalIdentifier?$13d81b90-d932-437f-a11c-9106412b6c4a@
Identifier?& @Name?Test Message
我认为这是一个编码问题;BrokeredMessage
但是,在将正文传递给构造函数时,我看不到设置编码的方法;或通过DataContract
属性定义它。