I'm developing a push-notifications system for my ASP.NET MVC app.
The idea is to use Redis for queueing, ServiceStack for queue processing and SignalR for push-notifications to implement a system that's able to distribute different types of notifications.
I've put together a quick prototype where I have a ServiceStack service which listens on the Redis queue. When it receives a message it looks at the ReplyTo property on the message, which contains the URL of the worker (subscriber) that can process the message. It then formulates a response for that worker and drops it into the Redis queue. Here, essentially ServiceStack is using PUBSUB feature of Redis to notify that worker that it has a new item to process. The worker then begins processing the message. An an example, if it's a connection request message, it'll try to pull all required data from SQL DB based on identifiers in the message. Lastly, it saves the message into a "Notifications" table. I'm guessing there would be multitude of these workers, processing different notification types coming out of all kinds of background jobs.
Here is the problem. I have no idea how to tell SignalR Notifications Hub that there is a new notification without having SignalR poll on that table. I could use SQL dependencies here, but it seems ugly. Ultimately it'd be cool to hit that Hub with a HTTP request from my worker, but i don't know if that's even possible.
What would you guys suggest?