You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ta...@apache.org on 2019/06/17 20:17:16 UTC
[qpid-jms] 01/01: QPIDJMS-461 Optimize the default message ID
builder
This is an automated email from the ASF dual-hosted git repository.
tabish pushed a commit to branch QPIDJMS-461
in repository https://gitbox.apache.org/repos/asf/qpid-jms.git
commit b2300cbfbcd00eb990c82e5be1735df9f6ba89c5
Author: Timothy Bish <ta...@gmail.com>
AuthorDate: Mon Jun 17 16:15:22 2019 -0400
QPIDJMS-461 Optimize the default message ID builder
Change the builtin Message ID builder to create a builder
per producer and optimize the string handling used to create
the Message ID from the producer id and sequence number.
---
.../qpid/jms/message/JmsMessageIDBuilder.java | 26 ++++++++++++++++++----
.../qpid/jms/policy/JmsDefaultMessageIDPolicy.java | 16 ++++++++-----
2 files changed, 33 insertions(+), 9 deletions(-)
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsMessageIDBuilder.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsMessageIDBuilder.java
index 319506b..f8a32cb 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsMessageIDBuilder.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsMessageIDBuilder.java
@@ -30,15 +30,19 @@ public interface JmsMessageIDBuilder {
DEFAULT {
@Override
public JmsMessageIDBuilder createBuilder() {
+
return new JmsMessageIDBuilder() {
+ private final StringBuilder builder = new StringBuilder();
+
@Override
public Object createMessageID(String producerId, long messageSequence) {
- String messageId = producerId + "-" + messageSequence;
- if (!AmqpMessageIdHelper.hasMessageIdPrefix(messageId)) {
- messageId = AmqpMessageIdHelper.JMS_ID_PREFIX + messageId;
+ builder.setLength(0);
+ if (!AmqpMessageIdHelper.hasMessageIdPrefix(producerId)) {
+ builder.append(AmqpMessageIdHelper.JMS_ID_PREFIX);
}
- return messageId;
+ builder.append(producerId).append("-").append(messageSequence);
+ return builder.toString();
}
@Override
@@ -115,6 +119,20 @@ public interface JmsMessageIDBuilder {
public static JmsMessageIDBuilder create(String value) {
return valueOf(value.toUpperCase(Locale.ENGLISH)).createBuilder();
}
+
+ /**
+ * Validates the value given maps to the built in message ID builders and
+ * return the builder enumeration that it maps to which can later be used
+ * to create builders of that type.
+ *
+ * @param value
+ * The name of one of the built in message ID builders.
+ *
+ * @return the enumeration value that maps to the built in builder.
+ */
+ public static BUILTIN validate(String value) {
+ return valueOf(value.toUpperCase(Locale.ENGLISH));
+ }
}
/**
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/policy/JmsDefaultMessageIDPolicy.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/policy/JmsDefaultMessageIDPolicy.java
index 2051561..870de3d 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/policy/JmsDefaultMessageIDPolicy.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/policy/JmsDefaultMessageIDPolicy.java
@@ -26,7 +26,8 @@ import org.apache.qpid.jms.message.JmsMessageIDBuilder;
*/
public class JmsDefaultMessageIDPolicy implements JmsMessageIDPolicy {
- private JmsMessageIDBuilder messageIDBuilder = JmsMessageIDBuilder.BUILTIN.DEFAULT.createBuilder();
+ private JmsMessageIDBuilder messageIDBuilder = null;
+ private JmsMessageIDBuilder.BUILTIN messageIDBuilderType = JmsMessageIDBuilder.BUILTIN.DEFAULT;
/**
* Initialize default Message ID builder policy
@@ -42,6 +43,7 @@ public class JmsDefaultMessageIDPolicy implements JmsMessageIDPolicy {
*/
public JmsDefaultMessageIDPolicy(JmsDefaultMessageIDPolicy source) {
this.messageIDBuilder = source.messageIDBuilder;
+ this.messageIDBuilderType = source.messageIDBuilderType;
}
@Override
@@ -51,7 +53,7 @@ public class JmsDefaultMessageIDPolicy implements JmsMessageIDPolicy {
@Override
public JmsMessageIDBuilder getMessageIDBuilder(JmsSession session, JmsDestination destination) {
- return messageIDBuilder;
+ return getMessageIDBuilder();
}
/**
@@ -61,18 +63,22 @@ public class JmsDefaultMessageIDPolicy implements JmsMessageIDPolicy {
* The name of the Message type to use when sending a message.
*/
public void setMessageIDType(String type) {
- this.messageIDBuilder = JmsMessageIDBuilder.BUILTIN.create(type);
+ this.messageIDBuilderType = JmsMessageIDBuilder.BUILTIN.validate(type);
}
/**
* @return the type name of the configured JmsMessageIDBuilder.
*/
public String getMessageIDType() {
- return this.messageIDBuilder.toString();
+ return getMessageIDBuilder().toString();
}
public JmsMessageIDBuilder getMessageIDBuilder() {
- return messageIDBuilder;
+ JmsMessageIDBuilder builder = this.messageIDBuilder;
+ if (builder == null) {
+ builder = messageIDBuilderType.createBuilder();
+ }
+ return builder;
}
public void setMessageIDBuilder(JmsMessageIDBuilder messageIDBuilder) {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org