Reliable Publish Subscribe
As WCF gets close to shipping I have a stumbling block. How could one implement pub/sub in a reliable manner?
My thought so far have been. 1) List based pub/sub using a duplex contract, as in the sdk example - pros: service defines the contract, cons: maintaining the client subscriptions reliably when the server goes down.
2) Client may go down, so send over a queue binding - pros: service does not need worry once the message has been sent, cons: each client defines their own contract, service would need a way to dynamically discover each client and send messages
3) The delegate type in .NET is a good paradigm, i.e. the class/service defines the method signature and data. Could this be applied to WCF in a similar manner so the service, as in duplex defines the method signature but transport can be queue based.
This is a common business senario but I don't see the answer. Can anyone help.
Maybe for a later version?
Thank you
Ben Walker
[999 byte] By [
BenECM] at [2007-12-24]
Ben,
I don't know whether you've looked at it already or not, but Juval Lowy has a nice article about implementing a pub/sub scenario using WCF in this month's MSDN Magazine, including a discussion on persistent subscriptions.
Hope that helps,
Vitaly
Depending on the nature of guarantees you are interested in your pub/sub scenario, David Pallmann from Neudesic has built a pub/sub enterprise messaging system on top of the peer channel in Indigo. The peer channel enables peer to peer multiparty messaging in .Net 3.0.
If you are interested in getting more information on this, please let me know. I can give you some details on how you can build this out on your own, or get you in touch with David.
Thanks,
Ravi Rao
Thanks Ravi. I would be interested in exploring this.
Are there additional platform requierments for the Peer channel, over and above Framework 3.0?
Thanks
Ben ECM
Hi,
I have viewed Lowy's publish/subscribe architecture, but what I cannot see is how subscribers (clients) are managed when they go down. (your issue 2).
With Loweys architecture, all subscribers will be notified whenever the publisher raises an event, each of these notifications are on a ThreadPool thread, which can degrade performance if the subscribers are no longer available.
How does the queue binding help with this scenario?