You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by ff...@apache.org on 2008/08/21 03:11:36 UTC
svn commit: r687529 -
/servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-jms/src/main/java/org/apache/servicemix/jms/endpoints/JmsProviderEndpoint.java
Author: ffang
Date: Wed Aug 20 18:11:36 2008
New Revision: 687529
URL: http://svn.apache.org/viewvc?rev=687529&view=rev
Log:
[SM-1513]Under high load JMS in/out provider fails to receive responses.
Modified:
servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-jms/src/main/java/org/apache/servicemix/jms/endpoints/JmsProviderEndpoint.java
Modified: servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-jms/src/main/java/org/apache/servicemix/jms/endpoints/JmsProviderEndpoint.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-jms/src/main/java/org/apache/servicemix/jms/endpoints/JmsProviderEndpoint.java?rev=687529&r1=687528&r2=687529&view=diff
==============================================================================
--- servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-jms/src/main/java/org/apache/servicemix/jms/endpoints/JmsProviderEndpoint.java (original)
+++ servicemix/smx3/branches/servicemix-3.2/deployables/bindingcomponents/servicemix-jms/src/main/java/org/apache/servicemix/jms/endpoints/JmsProviderEndpoint.java Wed Aug 20 18:11:36 2008
@@ -399,21 +399,26 @@
final Destination replyDest = getReplyDestination(exchange, out, session);
// Create message and send it
final Message sendJmsMsg = marshaler.createMessage(exchange, in, session);
- //setCorrelationID(sendJmsMsg, exchange);
- sendJmsMsg.setJMSReplyTo(replyDest);
+ sendJmsMsg.setJMSReplyTo(replyDest);
+
template.send(dest, new MessageCreator() {
- public Message createMessage(Session session) throws JMSException {
+ public Message createMessage(Session session)
+ throws JMSException {
return sendJmsMsg;
}
});
+
// Create selector
String jmsId = sendJmsMsg.getJMSMessageID();
String selector = MSG_SELECTOR_START + jmsId + MSG_SELECTOR_END;
- //Receiving JMS Message, Creating and Returning NormalizedMessage out
- Message receiveJmsMsg = template.receiveSelected(replyDest, selector);
- if (receiveJmsMsg == null) {
- throw new IllegalStateException("Unable to receive response");
- }
+ Message receiveJmsMsg;
+ synchronized (template) {
+ // Receiving JMS Message, Creating and Returning NormalizedMessage out
+ receiveJmsMsg = template.receiveSelected(replyDest, selector);
+ if (receiveJmsMsg == null) {
+ throw new IllegalStateException("Unable to receive response");
+ }
+ }
marshaler.populateMessage(receiveJmsMsg, exchange, out);
}