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 '14 at 20:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.