We are using Rhino-ESB with MSMQ as transport. MSMQ has been chosen instead of Rhino Queues due to the tooling available to inspect the queues.We have several small messages transferred continously and in addition to that one message send once a day which can be quite large and exceed the MSMQ 4MB limit.
To deal with this we are considering a databus/claim check approach where the message content of the large message is stored in a document database (MongoDB) and only an identifier is transferred using Rhino-ESB.
We would like to be able to handle this before the message is serialized (since it will be serialized again when saved in the database).
One solution would be to introduce a "pre-sending" event in the transport implementation where such cases as the above can be handled. The handler of this event should be able to signal that it has taken responsibility for the message. This way we can implement a message module to determine if a message content should be transferred normally or using the database approach.
How does that sound? Any other/better ideas?