I'll answer your questions one by one:
- Does rebus (or any servicebus type of solution) sound like a good fit here?
Yes, a service bus can help you deal with lots of stuff (e.g. serialization, threading, etc.) that you would otherwise have to somehow handle on your own.
- Should I use pub/sub or plain Send pattern? And will that choice affect if messages gets processed by only one endpoint at the time or several?
In this case, it sounds to me like you're in need of a competing consumers type of distribution of your tasks.
This is NOT pub/sub - pub/sub implies 0..* consumers for each message instance, but you want exactly one recipient for each task. Therefore, you would bus.Send
the tasks in this case.
- Could anyone point me to a good example or explain how to set this scenario up?
I've written several blog posts in an attempt to show how you can scale out the handling of your workload with Rebus with examples for the different supported transports.
It should be fairly easy for you to get started by looking at the posts and use e.g. SQL Server as your transport.