Greetings, I have set my trigger to:
Refill level 4000
Ack queue size 1000
Retry untill successful(in designer max retry attempts is changed to 0 that way with no option to change it - in messaging on IS GUI it’s set to -1)
Retry interval: 1 minute
Retry Failure Behavior Throw service exception
Processing mode Concurrent
Max execution threads 64
Service called by trigger is a service which invokes another one, which on catch calls Exit from flow signaling FAILURE.
I have published the document(designed to fail, and failing - I checked) few times, but it seems that it’s not being retried, as in webMethods Messaging Trigger Management:
Current Thread Count = 0
Current Queue Count=0
for this trigger.
Am I missing something?
What is the failure point or condition that you have designed to it fail/exception error?
Can you please elaborate on your pub/sub failure scenario here?
when query execution to database fails, catch gets it and executes EXIT from flow step with FAILURE. I test it via not giving all required data for DB adapter insert (trying to insert to non nullable columns)
About the triggered service:
trigger invokes a service A which looks like this:
INVOKE Service B
and service B looks like this
Try: Insert to DB
Catch: get last error, log it and EXIT with FAILURE
Works now, exception has to occur on the exact service executed by trigger itself, can’t be in subservice
I think you may need to use pub.flow:throwExceptionForRetry for automated retries. I’m surprised that EXIT ‘$flow’ and signal FAILURE does a retry.
A caveat is that this technique should retry for specific transient errors only. Doing retry for any and all errors can have undesirable behavior.
Is there a way to retry non-transient “business exceptions”?
It would be something like, move out the message to a RETRY.Q.
Based on some predefined conditions retry to submit the message after n-hours/n-days etc?
If it still fails, move the message to a DEAD.LETTER.Q