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?

  • How is changing from "real-time" to "near real-time" going to improve this question?
    – Sergei
    May 21, 2014 at 20:26


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Browse other questions tagged or ask your own question.