Amit,
Would simply raising the message priority be an option? You could write a tps procedure that sets the priority of a message to some value other than 5120.
This way if two messages with different priorities are in state 11 the protocol thread will pick up the one with the highest priority and send it if the protocol is up.
This doesn’t mean, however, that the engine will hold lower priority messages, it just means that it will send the highest priority messages first.
The key line of code would be:
msgmetaset $mh PRIORITY 6000
The only question to answer would be how to identify the messages that need a new priority. If all messages received by a source connection need a new priority then IB data is the place to go. If this only applies for a specific destination then pre or post route detail is the right place. At the route detail level also allows you to use the procedure on the specific message types you want without having to check inside the procedure.