Will ObjectExpired events always go to the same application id which has registered a handler?

#1
Assume the following scenario
  • Application using NamedCache, registers an ObjectExpiredHandler
  • OtherApplication using OtherNamedCache, does not register an ObjectExpiredHandler
  • Application and OtherApplication use the same SOSS cluster
Is it possible that expiration events from NamedCache could be sent to OtherApplication?
 

admin

Administrator
#1
No, apps will only receive expiration events for NamedCaches that they've registered for via the ObjectExpired event.

Be aware, however, that your ScaleOut StateServer cluster load balances its event delivery to clients in much the same way that it load balances its object load--events may not fire on the machine that you're expecting. So you'll need to make sure that your application that registers an ObjectExpired handler is deployed and running on each of your ScaleOut hosts, otherwise expiration events may be lost (if your app accesses your SOSS cluster remotely, you should have at least as many remote machines running your app as you have dedicated SOSS hosts).
 
#1
So does that mean if ApplicationA and OtherApplication are on different machines, then it is possible for an event intended for ApplicationA could arrive at the machine running OtherApplication?
 

admin

Administrator
#1
Yes, in that configuration, it is possible for an event intended for one application to be delivered by a host that does not run that application. For that reason, our recommendation is to run both applications on all hosts (or, alternatively, run a dedicated event handling service that knows how to handle the events for all of your applications -- this is more reliable since IIS may be in the process of resetting when an event is fired, and may cause the event to be unhandled).
 
Top