spring - Trying to get the message from server but receive call gets blocked -


// send message sending message server, working fine

public void sendmessage(com.google.protobuf.message sendmessage) {

try {   createjmstemplate();   createjmstemplatereciever();   jmsmessagecreator jmsmessagecreator = new jmsmessagecreator() {     @override     public message createmessage(session session) throws jmsexception {       bytesmessage msg = session.createbytesmessage();       msg.writebytes(sendmessage.tobytearray());       return msg;     }   };    messagecreator messagecreator = new messagecreator() {     public message createmessage(session session) throws jmsexception {       message msg = jmsmessagecreator.createmessage(session);       msg.setjmscorrelationid("2708");       return msg;     }   };    jmstemplate.send(messagecreator);   system.out.println("message sent... ");  } catch (exception e) {   e.printstacktrace();   system.exit(0); } 

}

//but when calling method, @ receive call gets blocked...

public void recievemessage() { try {

  bytemessage = (bytesmessage) jmstemplatereciever.receive();   try {     if (bytemessage != null) {       byte[] bytearr = new byte[(int) bytemessage.getbodylength()];       (int = 0; < (int) bytemessage.getbodylength(); i++) {         bytearr[i] = bytemessage.readbyte();         string s = new string(bytearr);         system.out.println(s);       }       string s = new string(bytearr);       system.out.println(s);        bytemessage.acknowledge();     }    } catch (jmsexception e) {    }  } catch (exception e) {   e.printstacktrace();   system.exit(0); } 

} }

as described in section 9.2.2 of jms 1.1 specification, receive() call blocks indefinitely until message arrives on queue. hence call getting blocked in application.

one option specify wait time, example receive(3000) waits 3 seconds , comes out if no message arrives in 3 seconds. jms implementer might providing form of receive method method returns if there no messages in queue.

the other option use message listener receiving messages asynchronously described jms 1.1 specifications section 9.3.1. application gets notified jms provider whenever message arrives in queue.


Comments

Popular posts from this blog

sql server - Cannot query correctly (MSSQL - PHP - JSON) -

php - trouble displaying mysqli database results in correct order -

C++ Linked List -