jms - MQ 7.0.1.9 selector JMSCorrelationID Mistaken Msg -


we developed java application in multiple java jms clients connect server, both websphere mq 7.0.1.9. each client has consumer selector on application specific client id eg. jmscorrelationid='050_14133431' on shared queues, in server set application specific client id on messages setjmscorrelationid( ) sent particular client. application specifi client ids unique. works fine of time. however, found messages client sessionid consumed client b surprisingly. checked logs , confirmed each client create consumer selector on sessionid. in understanding, consumer consume messages match selector criteria. 1 thing note used read ahead feature our application use non persistent messages. happened rarely, once month. idea why happen? syntax error in jmscorrelationid='050_14133431', should must start letter instead of digit? hints appreciated. in advance.

please find below jms documentation (emphasis mine):

the delivery modes supported jms api persistent , non_persistent.

a client marks message persistent if feels application have problems if message lost in transit. client marks message non-persistent if occasional lost message tolerable. clients use delivery mode tell jms provider how balance message transport reliability throughput.

delivery mode covers transport of message destination. retention of message @ destination until receipt acknowledged not guaranteed persistent delivery mode. clients should assume message retention policies set administratively. message retention policy governs reliability of message delivery destination message consumer. example, if client's message storage space exhausted, messages may dropped in accordance site-specific message retention policy.

a message guaranteed delivered once , once jms provider if delivery mode of message persistent , if destination has sufficient message retention policy.

https://docs.oracle.com/javaee/6/api/javax/jms/deliverymode.html

in summary, if message marked non_persistent, jms provider can't guarantee once , once delivery. if not acceptable, should change persistent mode.

also, should perform resilience (non-functional) tests (with scenarios broker fail overs, etc..) production volumes of messages, find out average number of duplicate messages.


Comments

Popular posts from this blog

html - Outlook 2010 Anchor (url/address/link) -

javascript - Why does running this loop 9 times take 100x longer than running it 8 times? -

Getting gateway time-out Rails app with Nginx + Puma running on Digital Ocean -