XML Serializer

Component: Xml Serializer
NuGet Package NServiceBus (7-pre)
This page targets a pre-release version and is subject to change prior to the final release.

This sample uses the default XML serializer in the core.

Configuring to use XML

var endpointConfiguration = new EndpointConfiguration("Samples.Serialization.Xml");
// this is optional since Xml is the default serializer
endpointConfiguration.UseSerialization<XmlSerializer>();
// register the mutator so the the message on the wire is written
endpointConfiguration.RegisterComponents(components =>
{
    components.ConfigureComponent<MessageBodyWriter>(DependencyLifecycle.InstancePerCall);
});

Diagnostic Mutator

A helper that will Write out the contents of any incoming message.

public class MessageBodyWriter :
    IMutateIncomingTransportMessages
{
    static ILog log = LogManager.GetLogger<MessageBodyWriter>();

    public Task MutateIncoming(MutateIncomingTransportMessageContext context)
    {
        var bodyAsString = Encoding.UTF8
            .GetString(context.Body);
        log.Info("Serialized Message Body:");
        log.Info(bodyAsString);
        return Task.CompletedTask;
    }
}

The message send

var message = new CreateOrder
{
    OrderId = 9,
    Date = DateTime.Now,
    CustomerId = 12,
    OrderItems = new List<OrderItem>
    {
        new OrderItem
        {
            ItemId = 6,
            Quantity = 2
        },
        new OrderItem
        {
            ItemId = 5,
            Quantity = 4
        },
    }
};
await endpointInstance.SendLocal(message)
    .ConfigureAwait(false);

The Output

<?xml version="1.0" ?>
<CreateOrder xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.net/XmlSample">
	<OrderId>9</OrderId>
	<Date>2015-09-15T13:33:28.7186624+10:00</Date>
	<CustomerId>12</CustomerId>
	<OrderItems>
		<OrderItem>
			<ItemId>6</ItemId>
			<Quantity>2</Quantity>
		</OrderItem>
		<OrderItem>
			<ItemId>5</ItemId>
			<Quantity>4</Quantity>
		</OrderItem>
	</OrderItems>
</CreateOrder>

Related Articles


Last modified