diff options
| author | Robert Godfrey <rgodfrey@apache.org> | 2013-05-14 21:50:33 +0000 |
|---|---|---|
| committer | Robert Godfrey <rgodfrey@apache.org> | 2013-05-14 21:50:33 +0000 |
| commit | b817022602f3dc25c94fbbb67969f42522a286f0 (patch) | |
| tree | eba040297d2c847e28d781c7a290f48feac6a1f9 /java | |
| parent | 15c5e37cbe099fceb62222de1d1494254129bcca (diff) | |
| download | qpid-python-b817022602f3dc25c94fbbb67969f42522a286f0.tar.gz | |
QPID-4844 : [JMS AMQP 1.0] Allow option to use String rather than Binary values for generated message-ids
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1482609 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
3 files changed, 51 insertions, 21 deletions
diff --git a/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionFactoryImpl.java b/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionFactoryImpl.java index 4856a7c491..96788ecd27 100644 --- a/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionFactoryImpl.java +++ b/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionFactoryImpl.java @@ -45,6 +45,7 @@ public class ConnectionFactoryImpl implements ConnectionFactory, TopicConnection private String _queuePrefix; private String _topicPrefix; + private boolean _useBinaryMessageId; public ConnectionFactoryImpl(final String host, final int port, @@ -100,6 +101,7 @@ public class ConnectionFactoryImpl implements ConnectionFactory, TopicConnection ConnectionImpl connection = new ConnectionImpl(_host, _port, username, password, _clientId, _remoteHost, _ssl); connection.setQueuePrefix(_queuePrefix); connection.setTopicPrefix(_topicPrefix); + connection.setUseBinaryMessageId(_useBinaryMessageId); return connection; } @@ -149,6 +151,9 @@ public class ConnectionFactoryImpl implements ConnectionFactory, TopicConnection String password = null; String clientId = null; String remoteHost = null; + + boolean binaryMessageId = true; + if(userInfo != null) { String[] components = userInfo.split(":",2); @@ -161,22 +166,26 @@ public class ConnectionFactoryImpl implements ConnectionFactory, TopicConnection String query = url.getQuery(); if(query != null) { - for(String param : query.split("&")) - { - String[] keyValuePair = param.split("=",2); - if(keyValuePair[0].equalsIgnoreCase("clientid")) - { - clientId = keyValuePair[1]; - } - else if(keyValuePair[0].equalsIgnoreCase("ssl")) - { - ssl = Boolean.valueOf(keyValuePair[1]); - } - else if(keyValuePair[0].equalsIgnoreCase("remote-host")) - { - remoteHost = keyValuePair[1]; - } - } + for(String param : query.split("&")) + { + String[] keyValuePair = param.split("=",2); + if(keyValuePair[0].equalsIgnoreCase("clientid")) + { + clientId = keyValuePair[1]; + } + else if(keyValuePair[0].equalsIgnoreCase("ssl")) + { + ssl = Boolean.valueOf(keyValuePair[1]); + } + else if(keyValuePair[0].equalsIgnoreCase("remote-host")) + { + remoteHost = keyValuePair[1]; + } + else if (keyValuePair[0].equalsIgnoreCase("binary-messageid")) + { + binaryMessageId = Boolean.parseBoolean(keyValuePair[1]); + } + } } if(remoteHost == null) @@ -184,7 +193,11 @@ public class ConnectionFactoryImpl implements ConnectionFactory, TopicConnection remoteHost = host; } - return new ConnectionFactoryImpl(host, port, username, password, clientId, remoteHost, ssl); + ConnectionFactoryImpl connectionFactory = + new ConnectionFactoryImpl(host, port, username, password, clientId, remoteHost, ssl); + connectionFactory.setUseBinaryMessageId(binaryMessageId); + + return connectionFactory; } @@ -235,4 +248,9 @@ public class ConnectionFactoryImpl implements ConnectionFactory, TopicConnection { _queuePrefix = queuePrefix; } + + public void setUseBinaryMessageId(boolean useBinaryMessageId) + { + _useBinaryMessageId = useBinaryMessageId; + } } diff --git a/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionImpl.java b/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionImpl.java index 4028d32e15..0ad62fd730 100644 --- a/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionImpl.java +++ b/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionImpl.java @@ -56,7 +56,7 @@ public class ConnectionImpl implements Connection, QueueConnection, TopicConnect private String _clientId;
private String _queuePrefix;
private String _topicPrefix;
-
+ private boolean _useBinaryMessageId = Boolean.parseBoolean(System.getProperty("qpid.use_binary_message_id", "true"));
private static enum State
{
@@ -510,4 +510,15 @@ public class ConnectionImpl implements Connection, QueueConnection, TopicConnect return new DecodedDestination(address, kind);
}
+ void setUseBinaryMessageId(boolean useBinaryMessageId)
+ {
+ _useBinaryMessageId = useBinaryMessageId;
+ }
+
+ boolean useBinaryMessageId()
+ {
+ return _useBinaryMessageId;
+ }
+
+
}
diff --git a/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageProducerImpl.java b/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageProducerImpl.java index 3b44bae84b..07a134f756 100644 --- a/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageProducerImpl.java +++ b/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageProducerImpl.java @@ -240,7 +240,7 @@ public class MessageProducerImpl implements MessageProducer, QueueSender, TopicP if(!getDisableMessageID() && msg.getMessageId() == null)
{
- final Binary messageId = generateMessageId();
+ final Object messageId = generateMessageId();
msg.setMessageId(messageId);
}
@@ -297,10 +297,11 @@ public class MessageProducerImpl implements MessageProducer, QueueSender, TopicP send((Destination)queue, message, deliveryMode, priority, ttl);
}
- private Binary generateMessageId()
+ private Object generateMessageId()
{
UUID uuid = UUID.randomUUID();
- return new Binary(uuid.toString().getBytes());
+ final String messageIdString = uuid.toString();
+ return _session.getConnection().useBinaryMessageId() ? new Binary(messageIdString.getBytes()) : messageIdString;
}
public void send(final Destination destination, final Message message) throws JMSException
|
