1
votes

I have a duplex wcf service which holds (in memory) list of callback references to its clients. There are two methods Subscribe and Unsubscribe on wcf service.

Its all working fine with One wcf server and multiple clients. Problem started when I introduced two wcf server with load balancing using Wcf router service.

For eg- I have two wcf servers(wcf1 and wcf2) and one router server (r1). When client call "Subscribe" to router endpoint, it broadcasts that request to both the wcf1 and wcf2 servers. So that both of them hold a callback reference to client. Problem starts when one of the wcf server is down. If wcf1 server goes down then all the subscriptions are lost. So when it comes back alive then there are no subscriptions available for it to do the callbacks and there is no way to notify clients to resubscribe.

I tried listening to fault event on the client side. That doesnt get triggered because its connecting to the router endpoint. That event will fire only if router server is down.

Has anyone faced similar issue to mine? Am I doing something wrong?

1

1 Answers

0
votes

The only way of handling this is to persist the callback list in some kind of share-able resource, such as a database, a cache, or even a file on a shared drive. This can be accessed by each instance of your service on startup, so all callbacks are loaded back in in the event of failure.

Sorry this is probably not what you want to here.