I have a scenario like --
I have 100 messages coming on queue Q1. I have configured a Message Driven Adaptor on queue Q1, which feeds the message to a router.
Router stamps the message priority and routes to two queues High-Q, Low-Q for high and low priority queues.
Let us say router classified them as 60 higher priority, rest 40 Low priority as per some rules and hence, sent to High-Q, Low-Q respectively.
Now I want to have JMS listeners to High-Q and Low-Q, so that they put the messages on a final output queue Q-final such that High-Q messages are always taken off first and processed.
- People will say that why not use priorty queue and put the output of route to priority-channel or queue. I would be happy but
- Let us take a case, when message producers send messages on Queue Q1, in a pattern like 10 messages which will be classified by router as High-Proority and send 5 which will be classified as low-priorty kind, at time T1 and then another 200 messages which will be of type High-Q at T1 + 5 milliseocond. In this case, the final consumer might end up taking lower priority 5 ahead of 200 messages. I want to avoid this for some good reasons.
- Second, is I can specify priority channel size as 5 but I dont want to loose message in case of server crash, as I think the messages in priorty-channel are in memory.
- Is there a possibility that I can customize the message listeners on queues High-Q and Low-Q so that they can cooridnate that low-queue listeners take off message only when High-Q has nothing to do and with a added delay.
Also, I am not keen to use pollers as there is polling interval which essentially adds to latency. Not sure if I have no other option but to use poller.
Please let me know if I am thinking right or there is already something in SI which I can use.
Any pointer will be greatly appreciated.