NServiceBus使用第三方xml

NServiceBus使用第三方xml,nservicebus,Nservicebus,总之,有谁能为我提供一些关于允许NServiceBus从非NServiceBus创建的队列中使用XML消息的指导吗。我正在尝试与第三方系统集成,该系统将XML消息放入队列。我对第三方生成的XML几乎没有控制权 我尝试过用-Messages/-tag包装他们的XML,我可以让消息到达正确的处理程序,但是许多字段(特别是在子类中)只是反序列化为null。第三方生成几种“类型”的消息,但在所有情况下,XML都相当简单 我试图避免编写只读取XML并在总线上丢弃消息的适配器 如有任何建议,将不胜感激 谢谢

总之,有谁能为我提供一些关于允许NServiceBus从非NServiceBus创建的队列中使用XML消息的指导吗。我正在尝试与第三方系统集成,该系统将XML消息放入队列。我对第三方生成的XML几乎没有控制权

我尝试过用-Messages/-tag包装他们的XML,我可以让消息到达正确的处理程序,但是许多字段(特别是在子类中)只是反序列化为null。第三方生成几种“类型”的消息,但在所有情况下,XML都相当简单

我试图避免编写只读取XML并在总线上丢弃消息的适配器

如有任何建议,将不胜感激


谢谢

关键在于如何生成消息类。如果可以,您应该从第三方获得XSD模式,该模式表示他们发送给您的XML

然后,您可以使用xsd.exe从模式生成类,这将在很大程度上保证从XML到类型的干净反序列化


如果无法获取模式,则可以再次使用xsd.exe从消息中推断模式。然而,这种方法并不是特别的故障安全,它会使您负面地接触到任何不符合推断模式的意外消息

NSB中的序列化是抽象的,因此您可以基于该格式编写自己的序列化程序。然后,您可以告诉NSB使用您的序列化程序,而不是内置的序列化程序。

是的,我尝试使用xsd.exe推断模式,然后生成类。。。我已经很接近了,但是仍然有很多子类,所有的属性都是空的。。。当xml明确有值时。你不能让第三方给你一个模式吗?使用普通的.Net System.xml.Serialization.XmlSerializer,我可以很好地反序列化xml。。这让我想知道两件事。。。我可以(轻松地)插入这一个吗?为什么nsb是一个简单的文档格式,却离反序列化如此遥远。。。我一定是做错了什么?它使用的序列化程序是自定义的,以容纳接口(XSD.exe不这样做)。也许您应该尝试使用提供的模式工具,我只是不确定它是否会生成类。我想试试。