I am using SendOnlyBus with NserviceBus 5.2 and my set-up code is like
busConfiguration.UsePersistence<NHibernatePersistence,StorageType.Subscriptions>();
busConfiguration.AssembliesToScan(AssembliesToScan);
busConfiguration.UseTransport<MsmqTransport>();
busConfiguration.PurgeOnStartup(false);
busConfiguration.UseSerialization<XmlSerializer>();
return Bus.CreateSendOnly(busConfiguration);
and web.config
<section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" />
<section name="MsmqTransportConfig" type="NServiceBus.Config.TransportConfig, NServiceBus.Core" />
<MsmqTransportConfig InputQueue="XXX" ErrorQueue="XXX" NumberOfWorkerThreads="X" MaxRetries="X" />
<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="X" Endpoint="X" />
</MessageEndpointMappings>
</UnicastBusConfig>
<add name="NServiceBus/Persistence" connectionString="Data Source=XXX;database=XXX;User ID=XX;Password=XXx;" />
<add key="NServiceBus/Persistence/NHibernate/dialect" value="NHibernate.Dialect.MsSql2005Dialect" />
<add key="NServiceBus/Persistence/NHibernate/connection.provider" value="NHibernate.Connection.DriverConnectionProvider" />
<add key="NServiceBus/Persistence/NHibernate/connection.driver_class" value="NHibernate.Driver.SqlClientDriver" />
this leads to error while publishing message.
Cannot publish on this endpoint - no subscription storage has been configured."
If i use Memory Persistence, it works fine but not with Hibernate DB-Subscription, Not able to find out what's missing or wrong. Appreciate any help ?.
Thanks
Explanation
NServiceBus is not configuring subscription persistence because you have asked for a send only endpoint.
Send only endpoints do not have an input queue, which means they have no way to receive and store subscriptions. Trying to Publish makes no sense if you have no subscribers.
Either
Bus.Publish()
toBus.Send()
or
return Bus.Create(busConfiguration)
instead ofreturn Bus.CreateSendOnly(busConfiguration)
Code sample
The only code needed to publish an event with NHibernate as subscription persistence on NServiceBus 5.2.0 and NServiceBus.NHibernate 6.1.2 is the following:
Program.cs
app.config