I am looking for native MQ delivery options like delaying the message delivery to native MQ by 'x' milliseconds. I am using IBM MQ in my environment where I will place all the messages from Gateway policy using 'Gateway Route via MQ Native' assertion. My intention is to delay the delivery by 'x' seconds every time I put message to the queue. Appreciated if you could provide some thoughts around this.
There are not out of the box functionality for a delay as you are requesting. There is a customer assertion called Delay Assertion and here is the description for it.
The delay assertion is a very simple assertion that effectively causes the execution of the policy to sleep for a given time. The assertion can be useful in testing and development whenever some latency needs to be simulated. This assertion is not intended for production usage.
If this is something you are looking for, please open a support issue so the support engineer can get you an approval to use the assertion
Hope this helps
Thank you Abbas,
I heard about this assertion however it is not intended to use in production. I would like to delay the message drops/pickup. As per my requirement inbound flow pushes more number of requests to queue, so I have to pick them in such a way that when I am process one message of same id then I should not pick any other update/message/request of same ID until the processing is done for previous message. To solve this problem only way I have is to introduce delay either at push/get message to/from queue.
Note: Flow is completely asynchronous so it is difficult to control inbound message flow.
Just a thought, you might think of using apply rate limit assertion to control the inbound requests.
Apply Rate Limit Assertion - CA API Gateway - 9.2 - CA Technologies Documentation
It's not a direct solution, but could be a work around for your use case.