The file share data bus allows large properties to be transferred via a Windows file share.
This implementation leverages both serialization and headers to provide its functionality.
Usage
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 have passed based on business Service-Level Agreements.
The file location used by the data bus is set during configuration time.
var claimCheck = endpointConfiguration.UseClaimCheck<FileShareClaimCheck, SystemJsonClaimCheckSerializer>();
claimCheck.BasePath(@"\\share\databus_attachments\");
This same location should be used when performing the cleanup.
For example, this path can be used in a Handler for a message containing data bus properties.
public class Handler :
NServiceBus.IHandleMessages<MessageWithLargePayload>,
NServiceBus.IHandleMessages<RemoveDatabusAttachment>
{
public Task Handle(MessageWithLargePayload message, NServiceBus.IMessageHandlerContext context)
{
var filePath = Path.Combine(@"\\share\databus_attachments\", message.LargeBlob.Key);
var removeAttachment = new RemoveDatabusAttachment
{
FilePath = filePath
};
var options = new NServiceBus.SendOptions();
options.RouteToThisEndpoint();
options.DelayDeliveryWith(TimeSpan.FromDays(30));
return context.Send(removeAttachment, options);
}
public Task Handle(RemoveDatabusAttachment message, NServiceBus.IMessageHandlerContext context)
{
var filePath = message.FilePath;
// Code to clean up
return Task.CompletedTask;
}
}