File Share DataBus

Project Hosting
NuGet NServiceBus (3.x)
Standard support for version 3.x of NServiceBus has expired. For more information see our Support Policy.

The FileShare DataBus allows large properties to be transferred via a windows file share

Also leverages both serialization and headers to provide its functionality.

Usage

configure.FileShareDataBus(databusPath);

Cleanup Strategy

FileShareDataBus does not remove physical attachments once the message has been processed.

The business requirements can indicate how a message and its corresponding file should be processed and when the files can safely be removed. One strategy to deal with these attachments is to set up a cleanup policy which removes any attachments after a certain number of days has passed based on business Service Level Agreements.

The file location used by the DataBus is set during configuration time.

var configure = Configure.With();
configure.FileShareDataBus(@"\\share\databus_attachments\");

This same location should be used when performing the cleanup.

So for example this path can be used in a Handler for a message containing DataBus properties.

public class Handler :
    IHandleMessages<MessageWithLargePayload>,
    IHandleMessages<RemoveDatabusAttachment>
{
    IBus bus;

    public Handler(IBus bus)
    {
        this.bus = bus;
    }

    public void Handle(MessageWithLargePayload message)
    {
        var filePath = Path.Combine(@"\\share\databus_attachments\", message.LargeBlob.Key);
        var removeAttachment = new RemoveDatabusAttachment
        {
            FilePath = filePath
        };
        bus.Defer(TimeSpan.FromDays(30), removeAttachment);
    }

    public void Handle(RemoveDatabusAttachment message)
    {
        var filePath = message.FilePath;
        // Code to clean up
    }

}

Samples


Last modified