I'm currently working on an application where one component of the application needs to interact with multiple other system components based on certain events. These events occur based on many different triggers... some events are caused by a user's action where other users need to be notified, some events are time-based, and other events are based on a change in the state of the object.
Based on what I've looked at so far, it sounds like the cleanest way to decouple the application components is to set up a publish/subscribe model where my objects in the component publish events that other interested application components can subscribe to.
I've seen nServiceBus, and for "vendor-lock-in" reasons I cannot use .NET Services in Azure. Are there other technologies available? Is there a different approach that I should be considering?
Edit - to be clear, this is a web-based high volume application. The application is ASP.NET MVC and the MVC application is communicating with multiple WCF services for its data.