We have a couple of NServiceBus v5.2.14 rabbitmq endpoints that are send-only and have Persistence configured. From my understanding this doesn’t make sense and persistence configuration can be removed is that correct?
So you are using NServiceBus.RabbitMQ 3.x? Are you aware that NServiceBus v5 is on extended support only until October this year?
To your question:
That version of the transport does
- Native pub/sub
so that means the subscription persistence is not needed. Given that it is a sendonly endpoint you also don’t require Sagas and Outbox.
But as far as I’m aware that version of the transport doesn’t yet support native delayed delivery and therefore requires the timeout persistence because it still uses the timeout manager. If you use delayed delivery you require still a persistence for the deferred sends.
I went into the code and noticed that .Defer is actually not even a part of the ISendOnly interface and only available when using IBus. This means SendOnly endpoints are unable to use Bus.Defer. This also makes sense because in the older documentation it also mentions that .Defer is semantically equivalent to .SendLocal which also makes no sense in a SendOnly endpoint
I think your statement is correct when we look at v5. I mixed knowledge with v6 and later. Because in v6 and later a send only endpoint can delay send messages even on a send only endpoint
Delaying a message is done using
DelayDeliveryWithmethod. This allows to defer the sending of a message to any endpoint.