2011-11-10 2 views
0

NServiceBusがNServiceBusによって作成されなかったキューからXMLメッセージを消費することを許可するためのガイダンスを誰にでも提供できますか? XMLメッセージをキューにドロップする第三者システムと統合しようとしています。私は、第三者が生成するXMLをほとんど制御していません。NServiceBusはサードパーティXMLを消費する

私はXMLを-Messages/- タグでラップしようとしましたが、正しいハンドラにヒットするメッセージを得ることができますが、多くのフィールド(特に子クラス)はnullにデシリアライズします。第三者はいくつかの "タイプ"のメッセージを生成しますが、いずれの場合もXMLはかなり単純です。

XMLを読み込んでメッセージをバスにドロップするアダプタを作成しないようにしようとしています。

何かアドバイスをいただければ幸いです。

ありがとうございます。

答えて

0

重要な点は、メッセージクラスの生成方法にあります。可能であれば、送信しているXMLを表すXSDスキーマをサードパーティから取得する必要があります。

は、その後、あなたはXMLからかなりの保証クリーンデシリアライズをタイプするだろうXsd.exeではを使用してスキーマオフクラスを生成することができます。

あなたがスキーマを得ることができないなら、あなたは再びメッセージからスキーマを推測するためにXsd.exeではを使用することができます。しかし、この方法は特にフェイルセーフではなく、推測されたスキーマに合致しない予期せぬメッセージにあなたを暴露します。

+0

いや、私はスキーマを推論し、クラスを生成するために、Xsd.exeではを使用してみました...私はそのようにかなり近いましたが、それでもすべてのプロパティがNULL子クラスの多くで終わる...ときxmlには明らかに値があります。 – Todd

+0

第三者にあなたにスキーマを与えることはできませんか? –

0

NSBのシリアル化は抽象化されているため、その形式に基づいて独自のシリアライザを作成できます。 NSBに組み込みのものの代わりにシリアライザを使用するようにNSBに指示することができます。

+0

plain .Net System.Xml.Serialization.XmlSerializerを使用しています。私はXMLをデシリアライズすることができます。これは2つのことを疑問に思っています...(簡単に)このプラグインを行うだけで、なぜnsbもそうですそれが単純な文書形式のときに非直列化にはるかに離れています...私は間違ったことをしているに違いないでしょうか? – Todd

+0

シリアライザはインターフェイスに対応するためのカスタムです(XSD.exeはこれを行いません)。たぶんあなたは、提供されたスキーマツールを使って試してみるべきです、私はクラスを生成するかどうか分かりません。私はそれを試してみましょう。 –

関連する問題