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);
}