locked
SuspensionInterval definition? RRS feed

  • Question

  • Got subscriptions running and trying to deal with dead/stale subscriptions. I know that the current method to do this is to use Reliable Subscriptions (ReliableSubscribeRequestType) and set the SuspensionInterval property. Does anyone know the units for this property? Its an int but that doesn't help much.

    The MSRS help docs that come with the install don't mention anything about it, MSDN only has "Interval to suspend notifications to a subscriber that can not be reached", search of the forum comes up empty, and fooling around with various values doesn't seem to have any impact. None of my subscriptions are ever added to the suspended list.

    Thanks
    Bryan
    Tuesday, September 2, 2008 5:53 PM

Answers

  • subscriptions are suspended when we get a message delivery error trying to send the notification to a subscriber. Funny enough, it has to be a tcp/http transport level error (wrong URI actually is ok, since the message will be sent to the node, and it will respond with fault, but for the subscription manager, the "send" was succesful.

     

    to really see the reliable subscription code kick in, subscribe across two nodes, drop the DSS node that subscribed, then you will see the subscription put in the suspended list.

     

    btw, our document model allows you to manipulate the subscription manager state on your own... (send it updates, deletes, etc)

     

    g

     

    Monday, September 8, 2008 8:24 PM
  • Hi Bryan,

     

    I looked up the SuspensionInterval and it is in seconds, so 2000 is probably too long anyway :-)

     

    Trevor

     

     

    Monday, September 8, 2008 8:47 PM

All replies

  • Hi Bryan,

     

    I think it is in milliseconds, but I will have to check and get back to you.

     

    I just wanted to make sure you understand what it is for. When the Subscription Manager tries to send a notification to a subscriber, there might be a comms error. In this case, the Subs Manager puts the subscriber on the suspended list and then retries later after the SuspensionInterval has elapsed. It should keep retrying, and if the subscriber eventually comes back online then notifications will resume.

     

    Trevor

     

    Thursday, September 4, 2008 1:53 AM
  • Trevor

    Maybe I don't understand the meaning of a comms error? I am assuming I can generate a comms error by dropping a subscriber service without shutting down its subscriptions. Thus after a short while I start to see the "Queue Limit Exceeded" error when notifications are sent from the publisher.


    I have a simple test where I setup 3 subscriptions, 2 are Reliable and one is a standard subscription all to the same message. The Publisher publishes the message on a 2 second interval and have the suspension interval set to 2000. Every 1 second I perform a GET on the subscription manager and have a break point set on a suspended list length that is greater than zero. I never hit the break point - thus don't see any subscriptions ever added to the suspended list. I do get successful responses when performing the get operation.

    Bryan
    Thursday, September 4, 2008 12:21 PM
  • subscriptions are suspended when we get a message delivery error trying to send the notification to a subscriber. Funny enough, it has to be a tcp/http transport level error (wrong URI actually is ok, since the message will be sent to the node, and it will respond with fault, but for the subscription manager, the "send" was succesful.

     

    to really see the reliable subscription code kick in, subscribe across two nodes, drop the DSS node that subscribed, then you will see the subscription put in the suspended list.

     

    btw, our document model allows you to manipulate the subscription manager state on your own... (send it updates, deletes, etc)

     

    g

     

    Monday, September 8, 2008 8:24 PM
  • Hi Bryan,

     

    I looked up the SuspensionInterval and it is in seconds, so 2000 is probably too long anyway :-)

     

    Trevor

     

     

    Monday, September 8, 2008 8:47 PM
  • George

    Ok, so apparently reliable subscribe only kicks in across nodes. Here's my dilemma, from previous forum posts I have surmised that I need to manage stale/dead subscriptions inside the publisher (should a subscribing service be dropped or evaporate without shutting down its subscription) by using reliable subscribe and watching for the subscription in the suspended list. As it now seems I can only determine if a subscription that crosses a node boundry has failed by using the suspended list, this leaves me at a loss as to how I might manage these broken subscriptions internal to a node, if I even can?

    Are these situations I should even be worrying about? One of our discussed (not finalized) designs is to be constantly constructing and dropping services so that the robot can perform different elements of the mission plan and I so I wan't to make sure I undersand all the elements of subscriptions/services that come and go, controlled or otherwise.


    Trevor

    Thanks for looking that up. Yes, 2000 seconds seems a tad too long to suspend someone.


    Thanks
    Bryan
    Wednesday, September 17, 2008 3:02 PM