Trace traces ${Environment.Variables.ExceptionList} to a file.
Here are my observations:
When the publisher publishes a message the subscriber flow receives the publication as expected. When the flow throws the exception the flow traverses down the JMSInput:Catch terminal as expected. I know this because the compute1 sets the Environment.Variables.Terminal which is traced. Here's the problem, the message is saved on SYSTEM.JMS.D.SUBSCRIBER.QUEUE.
If I modify the Compute node esql to not throw the exception no message is saved on the durable subscriber queue.
Now the reason why I have put together this flow is because we saw messages building on the durable subscriber queue. Through trial and error I discovered that whenever an exception was encountered by the subscriber flow the message would be saved in the durable subscriber queue and it the flow no longer receives it's subscriptions. I have tried to find an option to prevent this from occurring with no luck. Once I modify my flow - commenting the throw exception - all the messages on the durable subscriber queue destined for my subscriber get processed.
Our plan is to have an exception processing subflow attached to the catch terminal to move the subscription message to a d/b for subsequent processing. This would imply that we don't want the copy on the durable subscriber queue when the exception is thrown.
I am thinking that this may have something to do with syncpoint control but have doubts since I would think wiring the catch terminal would cause a commit to be reached?
Can you change your subscription to receive your messages on a specific queue and not one of the "Broker" queues?
This should make things much clearer to you.
My guess is that you just stop the flow because you have no backout strategy expressed and you keep throwing the message back.
I don't see why I would need to change the queue. I can see the messages destined for my subscription by looking at the subscriptions ClientId value obtained by doing a mqsibrowse <bkr> -t BSUBSCRIPTIONS and substringing off the last bytes which comprise the CorrelId. I then use this Correlid to see my subscribers messages on the durable subscriber queue. I also see the Backout count is 0. So the messages on the durable subscriber queue are not being read under syncpoint and then backed out.
I think there is something else going on here. It is not that the subscriber flow is getting the same message repeatedly and backing it out.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum