diff options
| author | Robert Godfrey <rgodfrey@apache.org> | 2014-02-21 10:52:21 +0000 |
|---|---|---|
| committer | Robert Godfrey <rgodfrey@apache.org> | 2014-02-21 10:52:21 +0000 |
| commit | a45f27637fd3b2ca1f83dd86d73c76d43bbe427f (patch) | |
| tree | e489bdf15c5a95dc4f86dea5582eb9f0b226de3b | |
| parent | 7e6f4149a73c4347475caa362f50e4e97d697e2d (diff) | |
| download | qpid-python-a45f27637fd3b2ca1f83dd86d73c76d43bbe427f.tar.gz | |
QPID-5574 : Allow sync-publish to override default behaviour to make persistent non-tarnsacted messages non-synchronous
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1570522 13f79535-47bb-0310-9956-ffa450edef68
3 files changed, 22 insertions, 8 deletions
diff --git a/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionFactoryImpl.java b/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionFactoryImpl.java index f8af2d388e..e83fc24fcd 100644 --- a/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionFactoryImpl.java +++ b/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionFactoryImpl.java @@ -58,7 +58,7 @@ public class ConnectionFactoryImpl implements ConnectionFactory, TopicConnection private String _queuePrefix; private String _topicPrefix; private boolean _useBinaryMessageId = Boolean.parseBoolean(System.getProperty("qpid.use_binary_message_id", "true")); - private boolean _syncPublish = Boolean.parseBoolean(System.getProperty("qpid.sync_publish", "false")); + private Boolean _syncPublish; private int _maxSessions = Integer.getInteger("qpid.max_sessions", 0); private int _maxPrefetch; private String _keyStorePath; @@ -138,6 +138,10 @@ public class ConnectionFactoryImpl implements ConnectionFactory, TopicConnection _remoteHost = remoteHost; _ssl = ssl; _maxSessions = maxSessions; + if(! "".equals(System.getProperty("qpid.sync_publish",""))) + { + _syncPublish = Boolean.getBoolean("qpid.sync_publish"); + } } public ConnectionImpl createConnection() throws JMSException @@ -239,7 +243,7 @@ public class ConnectionFactoryImpl implements ConnectionFactory, TopicConnection String remoteHost; boolean binaryMessageId = true; - boolean syncPublish; + Boolean syncPublish; int maxSessions; public boolean ssl; public int maxPrefetch; @@ -539,7 +543,7 @@ public class ConnectionFactoryImpl implements ConnectionFactory, TopicConnection _useBinaryMessageId = useBinaryMessageId; } - public void setSyncPublish(boolean syncPublish) + public void setSyncPublish(Boolean syncPublish) { _syncPublish = syncPublish; } diff --git a/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionImpl.java b/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionImpl.java index 7ce445a9b2..36bbba0897 100644 --- a/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionImpl.java +++ b/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionImpl.java @@ -62,7 +62,7 @@ public class ConnectionImpl implements Connection, QueueConnection, TopicConnect private String _queuePrefix; private String _topicPrefix; private boolean _useBinaryMessageId = Boolean.parseBoolean(System.getProperty("qpid.use_binary_message_id", "true")); - private boolean _syncPublish = Boolean.parseBoolean(System.getProperty("qpid.sync_publish", "false")); + private Boolean _syncPublish; private int _maxSessions; private int _maxPrefetch; @@ -141,6 +141,11 @@ public class ConnectionImpl implements Connection, QueueConnection, TopicConnect _remoteHost = remoteHost; _sslContext = sslContext; _maxSessions = maxSessions; + + if(! "".equals(System.getProperty("qpid.sync_publish",""))) + { + _syncPublish = Boolean.getBoolean("qpid.sync_publish"); + } } private void connect() throws JMSException @@ -629,12 +634,12 @@ public class ConnectionImpl implements Connection, QueueConnection, TopicConnect return _useBinaryMessageId; } - void setSyncPublish(boolean syncPublish) + void setSyncPublish(Boolean syncPublish) { _syncPublish = syncPublish; } - boolean syncPublish() + Boolean syncPublish() { return _syncPublish; } diff --git a/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageProducerImpl.java b/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageProducerImpl.java index b12540d597..9e03f43a08 100644 --- a/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageProducerImpl.java +++ b/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageProducerImpl.java @@ -55,12 +55,14 @@ public class MessageProducerImpl implements MessageProducer, QueueSender, TopicP private SessionImpl _session; private Sender _sender; private boolean _closed; - private boolean _syncPublish = Boolean.getBoolean("qpid.sync_publish"); + private Boolean _syncPublish; + private long _syncPublishTimeout = Long.getLong("qpid.sync_publish_timeout", 30000l); protected MessageProducerImpl(final Destination destination, final SessionImpl session) throws JMSException { + if(destination instanceof DestinationImpl) { _destination = (DestinationImpl) destination; @@ -305,7 +307,10 @@ public class MessageProducerImpl implements MessageProducer, QueueSender, TopicP final org.apache.qpid.amqp_1_0.client.Message clientMessage = new org.apache.qpid.amqp_1_0.client.Message(msg.getSections()); DispositionAction action = null; - final boolean doSync = _syncPublish || (deliveryMode == DeliveryMode.PERSISTENT && _session.getTxn() == null); + final boolean doSync = Boolean.TRUE.equals(_syncPublish) + || (deliveryMode == DeliveryMode.PERSISTENT + && _session.getTxn() == null + && !Boolean.FALSE.equals(_syncPublish)); if(doSync) { action = new DispositionAction(_sender); |
