Reprocessing one of the subscriber in PUB-SUB

Hi all,

I have a multiple subscriber scenario here.We publish a document and there are multiple subscription(say 5).

We have a situation.

Suppose out of 5 subscription 4 are succesfull and 1 subscription fails(internal service error).How can I reprocess the failed transaction so that the failed service can re-process it, with out the 4 other subscribers getting duplicate data, because when i reprocess the document at the publishing side, this document will be subscribed by all the 5 subscriber which I dont want.I want only the failed subsriber to receive the document.

Any help would be appreciated.

Thanks!

One common way is to use the webMethods Monitor. You can configure your top-level service (i.e. the service executed by the trigger) so that it logs pipeline data on error. When an error occurs, your service should throw an exception, which will cause the error and the data to be logged to the Monitor database. You can then login to the Monitor to resubmit it.

NOTE: If you’re dealing with a transient error (ex.: target database is down), you can actually configure the trigger to automatically retry the document until the target is available. You should be able to find related threads here on WMUsers.

  • Percio

castropb,
Thank you so much for the reply.But the data at the subscribing side is a sensitive data(clients vital information) and we dont want to log that data anywhere.So logging that data in Wm Monitor is not helpful.

Is there some other way to execute the failed trigger service without logging the sensitive data and without re-executing the the other subscribing services.

FYI the target side is FTPing the data.

Sure. There are several ways in which this can be achieved as long as you’re willing to do some extra coding.

From your posts, it sounds like you are capable of re-publishing the data, right? The problem is that you don’t want all the triggers to be re-executed again.

Here’s one possible solution: modify your publishing service so that it takes as input an optional variable called destId, for example. Your service should look at this variable and if the variable is null, then publish the document. Otherwise, use pub.publish:deliver to deliver the document to that specific trigger.

  • Percio

If you are not willing to do code change,

  1. suspend the trigger (pub.trigger:suspendProcessing) for other subscribers .
  2. reprocess the data from source
  3. clear the trigger queue for other subscribers.
  4. resume the trigger

Note: you have to select a window in such way that you should not see new transactions while doing above steps.

Thank you very much guys!