I’m testing NServiceBus and I’ve done following scenario:
1) published message to host from publisher, while host was not running yet
2) started host
and was hoping, that host will send that message to subscriber, but looks like it tried to handle message before loading subscribers, so naturally in time of handling it there was no subscribers yet, so I’ve lost my message (removed namespaces for clarity):
2012-02-16 13:21:09,634 1 INFO NServiceBus.Unicast.Transport.Msmq.MsmqTranspo
rt [(null)] <(null)> – You are running a community edition of the software which
only supports one thread.2012-02-16 1321:10,918 [Worker.5] INFO NServiceBus.Unicast.UnicastBus [(null)]
<(null)> – Received message ItemCommand, with ID b591c15e-ee05-4d28-99da-1bac1a6a5ecb\2991 from sender Generator@USER-PC2012-02-16 13:21:11,021 [Worker.5] INFO NServiceBus.Unicast.UnicastBus [(null)]
<(null)> – Subscribing WinFormsReceiver@USER-PC to message type ItemEvent2012-02-16 13:21:11,026 [Worker.5] INFO NServiceBus.Unicast.UnicastBus [(null)]
<(null)> – Subscribing Receiver@USER-PC to message type ItemEvent
Generic host is generated by using modeling tools, so default configuration.
Update: added model to understand better what is going on, also rephrased question below

Host type is NServiceBusHost
I think question should sound like this: can I register subscribers in host, not having subscribers to register by them selves or at least to check, if all subscribers are subscribed before starting to handle message? Here is scenario and how it works by default:
1) Host dies
2) Receiver dies
3) Generator generates message
4) Host is recovered, it has message in its queue
5) Host handles message
6) Receiver is recovered, it subscribes to host, but it’s queue is empty, as host didn’t knew about receiver on step 5 when it had message for receiver.
Because right now, after Host is recovered and it is ready to handle message, it does not know, that there will be receiver, so when it handles message in step 5, it won’t send it to receiver in default configuration.
Yes, NServiceBus can do exactly what you have described. You may be encountering a problem because you are not running in a profile that is robust enough for your test. By default, the example NSB projects run with in-memory subscription. This means that if the host that is publishing (‘Host’ in your case) is shut down, all the subscriptions are lost. You want to check out other profiles like the Integration and Production profiles. Integration saves subscribers in a queue and Production saves subscribers in a database. Then NSB understands if there is an expected subscription to fulfil that is not running (because the subscription information is persisted).
Further, I would suggest the following:
1) Generator does a
Bus.Send()to Host2) Host handles message and then does a publish
3) Receiver subscribes to Host
This that Host must be configured as a Publisher.
Hope this helps.