java - How to receive message from wildfly jms queue using consumer -


i encountered knotty problem when receiving message wildfly jms queue,my code blow:

session producesession = connectionfactory.createconnection().createsession(false, session                     .client_acknowledge);             session consumersession = connectionfactory.createconnection().createsession(false, session                     .client_acknowledge);             apsschedule apsschedule = new apsschedule();              boolean success;             messageproducer messageproducer = producesession.createproducer(outqueuemaxusorder);             success = apsschedule.sendd90order(producesession,messageproducer, d90orderaps);             if (!success) {                 logger.error("can't send aps schedule msg ");             } else {                 messageconsumer consumer = consumersession.createconsumer(inqueuedeliverydate);                 data = apsschedule.received90result(consumersession,consumer);             } 

then getting received90result():

public deliverydata received90result(session session, messageconsumer consumer) {     deliverydata data = null;     try {          message message = consumer.receive(10000);          if (message == null) {             return null;         }         textmessage msg = (textmessage) message;         string text = msg.gettext();         logger.debug("receive aps d90 result: {}", text);          objectmapper mapper = new objectmapper();         data = mapper.readvalue(text, deliverydata.class);     } catch (jmsexception je) {         logger.error("can't receive aps d90 order result: {}", je.getmessage());     } catch (exception e) {         e.printstacktrace();     } {         try {             consumer.close();         } catch (jmsexception e) {             e.printstacktrace();         }     }     return data; } 

but when implementing consumer.receive(10000), project cann't message queue. if use asynchronous way of mdb listen queue,i can message queue. how resolve ? have spent 2 days resolving ,i out of mind.could me?thx!thx!thx!

there multiple modes can choose message queue. message queues default asynchronous in usage. there cases when want read synchronously , example sending message account number , using queue read response , match message id or message correlation id. when receive , program waiting message arrive within polling interval specified in receive.

the code snippet have , see uses psuedo synchronous approach. if have use mdb , have implement message driven bean (ejb resource) or message listener.

the way mdb/message listener works more event based , instead of poll timeout (like receive) , implement callback called onmessage() invoked every time there message. instead of synchronous call , becomes asynchronous. application may require changes both in terms of design.


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -