Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
activemq
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Merge Requests
0
Merge Requests
0
Packages
Packages
Container Registry
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Debian Java Maintainers
activemq
Commits
336714a4
Commit
336714a4
authored
Jun 26, 2016
by
Markus Koschany
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Imported Upstream version 5.13.3+dfsg
parent
0ed42d96
Changes
119
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
119 changed files
with
4777 additions
and
633 deletions
+4777
-633
activemq-all/pom.xml
activemq-all/pom.xml
+2
-1
activemq-amqp/pom.xml
activemq-amqp/pom.xml
+1
-1
activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/message/AMQPMessageIdHelper.java
.../activemq/transport/amqp/message/AMQPMessageIdHelper.java
+255
-0
activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/message/InboundTransformer.java
...e/activemq/transport/amqp/message/InboundTransformer.java
+6
-2
activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/message/JMSMappingOutboundTransformer.java
...transport/amqp/message/JMSMappingOutboundTransformer.java
+6
-1
activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/client/AmqpMessage.java
...rg/apache/activemq/transport/amqp/client/AmqpMessage.java
+26
-0
activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/interop/AmqpMessageIdPreservationTest.java
...transport/amqp/interop/AmqpMessageIdPreservationTest.java
+166
-0
activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/message/AMQPMessageIdHelperTest.java
...ivemq/transport/amqp/message/AMQPMessageIdHelperTest.java
+406
-0
activemq-blueprint/pom.xml
activemq-blueprint/pom.xml
+1
-1
activemq-broker/pom.xml
activemq-broker/pom.xml
+1
-1
activemq-broker/src/main/java/org/apache/activemq/advisory/AdvisoryBroker.java
...ain/java/org/apache/activemq/advisory/AdvisoryBroker.java
+41
-23
activemq-broker/src/main/java/org/apache/activemq/broker/jmx/HealthView.java
.../main/java/org/apache/activemq/broker/jmx/HealthView.java
+19
-6
activemq-broker/src/main/java/org/apache/activemq/broker/jmx/HealthViewMBean.java
.../java/org/apache/activemq/broker/jmx/HealthViewMBean.java
+13
-0
activemq-broker/src/main/java/org/apache/activemq/broker/jmx/NetworkConnectorView.java
.../org/apache/activemq/broker/jmx/NetworkConnectorView.java
+38
-0
activemq-broker/src/main/java/org/apache/activemq/broker/jmx/NetworkConnectorViewMBean.java
...apache/activemq/broker/jmx/NetworkConnectorViewMBean.java
+9
-0
activemq-broker/src/main/java/org/apache/activemq/broker/region/BaseDestination.java
...va/org/apache/activemq/broker/region/BaseDestination.java
+1
-1
activemq-broker/src/main/java/org/apache/activemq/broker/region/Queue.java
...rc/main/java/org/apache/activemq/broker/region/Queue.java
+51
-40
activemq-broker/src/main/java/org/apache/activemq/broker/region/cursors/QueueDispatchPendingList.java
...ivemq/broker/region/cursors/QueueDispatchPendingList.java
+57
-29
activemq-broker/src/main/java/org/apache/activemq/broker/region/virtual/FilteredDestination.java
...e/activemq/broker/region/virtual/FilteredDestination.java
+33
-2
activemq-broker/src/main/java/org/apache/activemq/network/DemandForwardingBridgeSupport.java
...pache/activemq/network/DemandForwardingBridgeSupport.java
+15
-3
activemq-broker/src/main/java/org/apache/activemq/network/NetworkBridgeConfiguration.java
...g/apache/activemq/network/NetworkBridgeConfiguration.java
+40
-0
activemq-camel/pom.xml
activemq-camel/pom.xml
+1
-1
activemq-client/pom.xml
activemq-client/pom.xml
+1
-1
activemq-client/src/main/java/org/apache/activemq/ActiveMQMessageConsumer.java
...ain/java/org/apache/activemq/ActiveMQMessageConsumer.java
+3
-1
activemq-client/src/main/java/org/apache/activemq/command/ActiveMQBytesMessage.java
...ava/org/apache/activemq/command/ActiveMQBytesMessage.java
+14
-15
activemq-client/src/main/java/org/apache/activemq/command/Message.java
...nt/src/main/java/org/apache/activemq/command/Message.java
+9
-2
activemq-client/src/main/java/org/apache/activemq/thread/TaskRunnerFactory.java
...in/java/org/apache/activemq/thread/TaskRunnerFactory.java
+2
-2
activemq-client/src/main/java/org/apache/activemq/transport/failover/FailoverTransport.java
...apache/activemq/transport/failover/FailoverTransport.java
+97
-127
activemq-client/src/main/java/org/apache/activemq/transport/nio/SelectorManager.java
...va/org/apache/activemq/transport/nio/SelectorManager.java
+1
-1
activemq-client/src/main/java/org/apache/activemq/util/ThreadPoolUtils.java
...c/main/java/org/apache/activemq/util/ThreadPoolUtils.java
+39
-1
activemq-console/pom.xml
activemq-console/pom.xml
+1
-1
activemq-fileserver/pom.xml
activemq-fileserver/pom.xml
+1
-1
activemq-http/pom.xml
activemq-http/pom.xml
+1
-1
activemq-http/src/main/java/org/apache/activemq/transport/http/HttpInactivityMonitor.java
...apache/activemq/transport/http/HttpInactivityMonitor.java
+58
-0
activemq-http/src/main/java/org/apache/activemq/transport/http/HttpTransportFactory.java
.../apache/activemq/transport/http/HttpTransportFactory.java
+4
-5
activemq-http/src/test/java/org/apache/activemq/transport/http/HttpTransportConnectTimeoutTest.java
...ivemq/transport/http/HttpTransportConnectTimeoutTest.java
+93
-0
activemq-http/src/test/resources/log4j.properties
activemq-http/src/test/resources/log4j.properties
+1
-0
activemq-itests-spring31/pom.xml
activemq-itests-spring31/pom.xml
+1
-1
activemq-jaas/pom.xml
activemq-jaas/pom.xml
+1
-1
activemq-jaas/src/main/java/org/apache/activemq/jaas/PropertiesLoader.java
.../main/java/org/apache/activemq/jaas/PropertiesLoader.java
+2
-0
activemq-jaas/src/main/java/org/apache/activemq/jaas/ReloadableProperties.java
...n/java/org/apache/activemq/jaas/ReloadableProperties.java
+1
-0
activemq-jaas/src/test/java/org/apache/activemq/jaas/PropertiesLoginModuleTest.java
...a/org/apache/activemq/jaas/PropertiesLoginModuleTest.java
+79
-40
activemq-jaas/src/test/resources/groupsReload.properties
activemq-jaas/src/test/resources/groupsReload.properties
+20
-0
activemq-jaas/src/test/resources/login.config
activemq-jaas/src/test/resources/login.config
+9
-0
activemq-jaas/src/test/resources/usersReload.properties
activemq-jaas/src/test/resources/usersReload.properties
+21
-0
activemq-jdbc-store/pom.xml
activemq-jdbc-store/pom.xml
+1
-1
activemq-jms-pool/pom.xml
activemq-jms-pool/pom.xml
+1
-1
activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/ConnectionPool.java
...ain/java/org/apache/activemq/jms/pool/ConnectionPool.java
+17
-17
activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledConnection.java
...n/java/org/apache/activemq/jms/pool/PooledConnection.java
+2
-2
activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledConnectionFactory.java
...org/apache/activemq/jms/pool/PooledConnectionFactory.java
+5
-14
activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionFailoverTest.java
...pache/activemq/jms/pool/PooledConnectionFailoverTest.java
+117
-0
activemq-jms-pool/src/test/resources/log4j.properties
activemq-jms-pool/src/test/resources/log4j.properties
+3
-3
activemq-kahadb-store/pom.xml
activemq-kahadb-store/pom.xml
+1
-1
activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/KahaDBPersistenceAdapter.java
...pache/activemq/store/kahadb/KahaDBPersistenceAdapter.java
+51
-0
activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/KahaDBStore.java
...in/java/org/apache/activemq/store/kahadb/KahaDBStore.java
+2
-1
activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/MessageDatabase.java
...ava/org/apache/activemq/store/kahadb/MessageDatabase.java
+299
-65
activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/MultiKahaDBTransactionStore.java
...he/activemq/store/kahadb/MultiKahaDBTransactionStore.java
+22
-16
activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/Visitor.java
...c/main/java/org/apache/activemq/store/kahadb/Visitor.java
+4
-0
activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/journal/DataFile.java
...g/apache/activemq/store/kahadb/disk/journal/DataFile.java
+12
-11
activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/journal/DataFileAccessor.java
.../activemq/store/kahadb/disk/journal/DataFileAccessor.java
+1
-4
activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/journal/DataFileAppender.java
.../activemq/store/kahadb/disk/journal/DataFileAppender.java
+2
-30
activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/journal/FileAppender.java
...ache/activemq/store/kahadb/disk/journal/FileAppender.java
+4
-2
activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/journal/Journal.java
...rg/apache/activemq/store/kahadb/disk/journal/Journal.java
+90
-38
activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/journal/TargetedDataFileAppender.java
...q/store/kahadb/disk/journal/TargetedDataFileAppender.java
+297
-0
activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/page/PageFile.java
.../org/apache/activemq/store/kahadb/disk/page/PageFile.java
+29
-28
activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/util/DataByteArrayInputStream.java
...vemq/store/kahadb/disk/util/DataByteArrayInputStream.java
+24
-7
activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/util/DataByteArrayOutputStream.java
...emq/store/kahadb/disk/util/DataByteArrayOutputStream.java
+17
-7
activemq-kahadb-store/src/main/proto/journal-data.proto
activemq-kahadb-store/src/main/proto/journal-data.proto
+12
-0
activemq-kahadb-store/src/test/java/org/apache/activemq/store/kahadb/disk/journal/TargetedDataFileAppenderTest.java
...ore/kahadb/disk/journal/TargetedDataFileAppenderTest.java
+116
-0
activemq-karaf-itest/pom.xml
activemq-karaf-itest/pom.xml
+1
-1
activemq-karaf/pom.xml
activemq-karaf/pom.xml
+1
-1
activemq-leveldb-store/pom.xml
activemq-leveldb-store/pom.xml
+1
-1
activemq-leveldb-store/src/main/proto/records.proto
activemq-leveldb-store/src/main/proto/records.proto
+2
-1
activemq-leveldb-store/src/main/scala/org/apache/activemq/leveldb/DBManager.scala
...rc/main/scala/org/apache/activemq/leveldb/DBManager.scala
+8
-2
activemq-leveldb-store/src/main/scala/org/apache/activemq/leveldb/LevelDBStore.scala
...main/scala/org/apache/activemq/leveldb/LevelDBStore.scala
+1
-0
activemq-log4j-appender/pom.xml
activemq-log4j-appender/pom.xml
+1
-1
activemq-mqtt/pom.xml
activemq-mqtt/pom.xml
+1
-1
activemq-openwire-generator/pom.xml
activemq-openwire-generator/pom.xml
+1
-1
activemq-openwire-legacy/pom.xml
activemq-openwire-legacy/pom.xml
+1
-1
activemq-osgi/pom.xml
activemq-osgi/pom.xml
+1
-1
activemq-partition/pom.xml
activemq-partition/pom.xml
+1
-1
activemq-pool/pom.xml
activemq-pool/pom.xml
+1
-1
activemq-ra/pom.xml
activemq-ra/pom.xml
+1
-1
activemq-rar/pom.xml
activemq-rar/pom.xml
+1
-1
activemq-run/pom.xml
activemq-run/pom.xml
+1
-1
activemq-runtime-config/pom.xml
activemq-runtime-config/pom.xml
+1
-1
activemq-shiro/pom.xml
activemq-shiro/pom.xml
+1
-1
activemq-spring/pom.xml
activemq-spring/pom.xml
+1
-1
activemq-spring/src/main/resources/META-INF/spring.schemas
activemq-spring/src/main/resources/META-INF/spring.schemas
+1
-0
activemq-stomp/pom.xml
activemq-stomp/pom.xml
+1
-1
activemq-stomp/src/main/java/org/apache/activemq/transport/stomp/LegacyFrameTranslator.java
...pache/activemq/transport/stomp/LegacyFrameTranslator.java
+3
-4
activemq-stomp/src/test/java/org/apache/activemq/transport/stomp/StompCompositeDestinationTest.java
...tivemq/transport/stomp/StompCompositeDestinationTest.java
+46
-0
activemq-tooling/activemq-junit/pom.xml
activemq-tooling/activemq-junit/pom.xml
+1
-1
activemq-tooling/activemq-maven-plugin/pom.xml
activemq-tooling/activemq-maven-plugin/pom.xml
+1
-1
activemq-tooling/activemq-memtest-maven-plugin/pom.xml
activemq-tooling/activemq-memtest-maven-plugin/pom.xml
+1
-1
activemq-tooling/activemq-perf-maven-plugin/pom.xml
activemq-tooling/activemq-perf-maven-plugin/pom.xml
+1
-1
activemq-tooling/pom.xml
activemq-tooling/pom.xml
+1
-1
activemq-unit-tests/pom.xml
activemq-unit-tests/pom.xml
+5
-1
activemq-unit-tests/src/test/java/org/apache/activemq/broker/jmx/HealthViewMBeanTest.java
...a/org/apache/activemq/broker/jmx/HealthViewMBeanTest.java
+5
-0
activemq-unit-tests/src/test/java/org/apache/activemq/broker/jmx/SelectiveMBeanRegistrationTest.java
...e/activemq/broker/jmx/SelectiveMBeanRegistrationTest.java
+5
-29
activemq-unit-tests/src/test/java/org/apache/activemq/bugs/AMQ3436Test.java
...s/src/test/java/org/apache/activemq/bugs/AMQ3436Test.java
+1
-0
activemq-unit-tests/src/test/java/org/apache/activemq/bugs/AMQ6244Test.java
...s/src/test/java/org/apache/activemq/bugs/AMQ6244Test.java
+179
-0
activemq-unit-tests/src/test/java/org/apache/activemq/bugs/AMQ6254Test.java
...s/src/test/java/org/apache/activemq/bugs/AMQ6254Test.java
+348
-0
activemq-unit-tests/src/test/java/org/apache/activemq/bugs/TransactedStoreUsageSuspendResumeTest.java
.../activemq/bugs/TransactedStoreUsageSuspendResumeTest.java
+3
-2
activemq-unit-tests/src/test/java/org/apache/activemq/network/VirtualConsumerDemandTest.java
...rg/apache/activemq/network/VirtualConsumerDemandTest.java
+54
-1
activemq-unit-tests/src/test/java/org/apache/activemq/store/AbstractVmConcurrentDispatchTest.java
...ache/activemq/store/AbstractVmConcurrentDispatchTest.java
+294
-0
activemq-unit-tests/src/test/java/org/apache/activemq/store/kahadb/KahaDbVmConcurrentDispatchTest.java
...activemq/store/kahadb/KahaDbVmConcurrentDispatchTest.java
+68
-0
activemq-unit-tests/src/test/java/org/apache/activemq/store/kahadb/MultiKahaDbVmConcurrentDispatchTest.java
...emq/store/kahadb/MultiKahaDbVmConcurrentDispatchTest.java
+81
-0
activemq-unit-tests/src/test/java/org/apache/activemq/store/leveldb/LevelDbVmConcurrentDispatchTest.java
...tivemq/store/leveldb/LevelDbVmConcurrentDispatchTest.java
+61
-0
activemq-unit-tests/src/test/java/org/apache/activemq/usecases/AdvisoryViaNetworkTest.java
.../org/apache/activemq/usecases/AdvisoryViaNetworkTest.java
+194
-0
activemq-unit-tests/src/test/java/org/apache/activemq/usecases/PriorityRedeliveryOrderTest.java
...apache/activemq/usecases/PriorityRedeliveryOrderTest.java
+210
-0
activemq-unit-tests/src/test/java/org/apache/activemq/usecases/QueueZeroPrefetchLazyDispatchPriorityTest.java
...q/usecases/QueueZeroPrefetchLazyDispatchPriorityTest.java
+393
-0
activemq-web-console/pom.xml
activemq-web-console/pom.xml
+1
-1
activemq-web-demo/pom.xml
activemq-web-demo/pom.xml
+1
-1
activemq-web/pom.xml
activemq-web/pom.xml
+1
-1
assembly/pom.xml
assembly/pom.xml
+1
-1
assembly/src/release/bin/activemq-admin.bat
assembly/src/release/bin/activemq-admin.bat
+1
-1
assembly/src/release/bin/activemq.bat
assembly/src/release/bin/activemq.bat
+1
-1
pom.xml
pom.xml
+11
-5
No files found.
activemq-all/pom.xml
View file @
336714a4
...
...
@@ -14,7 +14,7 @@
<parent>
<groupId>
org.apache.activemq
</groupId>
<artifactId>
activemq-parent
</artifactId>
<version>
5.13.
2
</version>
<version>
5.13.
3
</version>
</parent>
<artifactId>
activemq-all
</artifactId>
...
...
@@ -127,6 +127,7 @@
<include>
org.springframework:spring-context
</include>
<include>
org.springframework:spring-expression
</include>
<include>
org.springframework:spring-jms
</include>
<include>
org.springframework:spring-messaging
</include>
<include>
org.springframework:spring-tx
</include>
<include>
org.apache.xbean:xbean-spring
</include>
<include>
org.apache.camel:camel-jms
</include>
...
...
activemq-amqp/pom.xml
View file @
336714a4
...
...
@@ -22,7 +22,7 @@
<parent>
<groupId>
org.apache.activemq
</groupId>
<artifactId>
activemq-parent
</artifactId>
<version>
5.13.
2
</version>
<version>
5.13.
3
</version>
</parent>
<artifactId>
activemq-amqp
</artifactId>
...
...
activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/message/AMQPMessageIdHelper.java
0 → 100644
View file @
336714a4
This diff is collapsed.
Click to expand it.
activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/message/InboundTransformer.java
View file @
336714a4
/*
*
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
...
...
@@ -118,14 +118,17 @@ public abstract class InboundTransformer {
}
else
{
jms
.
setJMSDeliveryMode
(
defaultDeliveryMode
);
}
if
(
header
.
getPriority
()
!=
null
)
{
jms
.
setJMSPriority
(
header
.
getPriority
().
intValue
());
}
else
{
jms
.
setJMSPriority
(
defaultPriority
);
}
if
(
header
.
getFirstAcquirer
()
!=
null
)
{
jms
.
setBooleanProperty
(
prefixVendor
+
"FirstAcquirer"
,
header
.
getFirstAcquirer
());
}
if
(
header
.
getDeliveryCount
()
!=
null
)
{
vendor
.
setJMSXDeliveryCount
(
jms
,
header
.
getDeliveryCount
().
longValue
());
}
...
...
@@ -188,7 +191,7 @@ public abstract class InboundTransformer {
final
Properties
properties
=
amqp
.
getProperties
();
if
(
properties
!=
null
)
{
if
(
properties
.
getMessageId
()
!=
null
)
{
jms
.
setJMSMessageID
(
properties
.
getMessageId
().
toString
(
));
jms
.
setJMSMessageID
(
AMQPMessageIdHelper
.
INSTANCE
.
toBaseMessageIdString
(
properties
.
getMessageId
()
));
}
Binary
userId
=
properties
.
getUserId
();
if
(
userId
!=
null
)
{
...
...
@@ -236,6 +239,7 @@ public abstract class InboundTransformer {
if
(
header
.
getTtl
()
!=
null
)
{
ttl
=
header
.
getTtl
().
longValue
();
}
if
(
ttl
==
0
)
{
jms
.
setJMSExpiration
(
0
);
}
else
{
...
...
activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/message/JMSMappingOutboundTransformer.java
View file @
336714a4
...
...
@@ -41,6 +41,7 @@ import javax.jms.Topic;
import
org.apache.activemq.command.ActiveMQMessage
;
import
org.apache.activemq.command.MessageId
;
import
org.apache.activemq.transport.amqp.AmqpProtocolException
;
import
org.apache.qpid.proton.amqp.Binary
;
import
org.apache.qpid.proton.amqp.Symbol
;
import
org.apache.qpid.proton.amqp.UnsignedByte
;
...
...
@@ -180,7 +181,11 @@ public class JMSMappingOutboundTransformer extends OutboundTransformer {
MessageId
msgId
=
amqMsg
.
getMessageId
();
if
(
msgId
.
getTextView
()
!=
null
)
{
props
.
setMessageId
(
msgId
.
getTextView
());
try
{
props
.
setMessageId
(
AMQPMessageIdHelper
.
INSTANCE
.
toIdObject
(
msgId
.
getTextView
()));
}
catch
(
AmqpProtocolException
e
)
{
props
.
setMessageId
(
msgId
.
getTextView
().
toString
());
}
}
else
{
props
.
setMessageId
(
msgId
.
toString
());
}
...
...
activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/client/AmqpMessage.java
View file @
336714a4
...
...
@@ -198,6 +198,32 @@ public class AmqpMessage {
return
message
.
getProperties
().
getMessageId
().
toString
();
}
/**
* Return the set MessageId value in the original form, if there are no properties
* in the given message return null.
*
* @return the set message ID in its original form or null if not set.
*/
public
Object
getRawMessageId
()
{
if
(
message
.
getProperties
()
==
null
)
{
return
null
;
}
return
message
.
getProperties
().
getMessageId
();
}
/**
* Sets the MessageId property on an outbound message using the provided value
*
* @param messageId
* the message ID value to set.
*/
public
void
setRawMessageId
(
Object
messageId
)
{
checkReadOnly
();
lazyCreateProperties
();
getWrappedMessage
().
setMessageId
(
messageId
);
}
/**
* Sets the GroupId property on an outbound message using the provided String
*
...
...
activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/interop/AmqpMessageIdPreservationTest.java
0 → 100644
View file @
336714a4
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org
.
apache
.
activemq
.
transport
.
amqp
.
interop
;
import
static
org
.
junit
.
Assert
.
assertEquals
;
import
static
org
.
junit
.
Assert
.
assertNotNull
;
import
java.util.UUID
;
import
java.util.concurrent.TimeUnit
;
import
org.apache.activemq.broker.jmx.QueueViewMBean
;
import
org.apache.activemq.transport.amqp.client.AmqpClient
;
import
org.apache.activemq.transport.amqp.client.AmqpClientTestSupport
;
import
org.apache.activemq.transport.amqp.client.AmqpConnection
;
import
org.apache.activemq.transport.amqp.client.AmqpMessage
;
import
org.apache.activemq.transport.amqp.client.AmqpReceiver
;
import
org.apache.activemq.transport.amqp.client.AmqpSender
;
import
org.apache.activemq.transport.amqp.client.AmqpSession
;
import
org.apache.qpid.proton.amqp.Binary
;
import
org.apache.qpid.proton.amqp.UnsignedLong
;
import
org.junit.Test
;
/**
* Tests that the AMQP MessageID value and type are preserved.
*/
public
class
AmqpMessageIdPreservationTest
extends
AmqpClientTestSupport
{
@Override
protected
boolean
isPersistent
()
{
return
true
;
}
@Test
(
timeout
=
60000
)
public
void
testStringMessageIdIsPreserved
()
throws
Exception
{
doTestMessageIdPreservation
(
"msg-id-string:1"
);
}
@Test
(
timeout
=
60000
)
public
void
testStringMessageIdIsPreservedAfterRestart
()
throws
Exception
{
doTestMessageIdPreservationOnBrokerRestart
(
"msg-id-string:1"
);
}
@Test
(
timeout
=
60000
)
public
void
testUUIDMessageIdIsPreserved
()
throws
Exception
{
doTestMessageIdPreservation
(
UUID
.
randomUUID
());
}
@Test
(
timeout
=
60000
)
public
void
testUUIDMessageIdIsPreservedAfterRestart
()
throws
Exception
{
doTestMessageIdPreservationOnBrokerRestart
(
UUID
.
randomUUID
());
}
@Test
(
timeout
=
60000
)
public
void
testUnsignedLongMessageIdIsPreserved
()
throws
Exception
{
doTestMessageIdPreservation
(
new
UnsignedLong
(
255
l
));
}
@Test
(
timeout
=
60000
)
public
void
testUnsignedLongMessageIdIsPreservedAfterRestart
()
throws
Exception
{
doTestMessageIdPreservationOnBrokerRestart
(
new
UnsignedLong
(
255
l
));
}
@Test
(
timeout
=
60000
)
public
void
testBinaryLongMessageIdIsPreserved
()
throws
Exception
{
byte
[]
payload
=
new
byte
[
32
];
for
(
int
i
=
0
;
i
<
32
;
++
i
)
{
payload
[
i
]
=
(
byte
)
(
'a'
+
i
);
}
doTestMessageIdPreservation
(
new
Binary
(
payload
));
}
@Test
(
timeout
=
60000
)
public
void
testBinaryLongMessageIdIsPreservedAfterRestart
()
throws
Exception
{
byte
[]
payload
=
new
byte
[
32
];
for
(
int
i
=
0
;
i
<
32
;
++
i
)
{
payload
[
i
]
=
(
byte
)
(
'a'
+
i
);
}
doTestMessageIdPreservationOnBrokerRestart
(
new
Binary
(
payload
));
}
@Test
(
timeout
=
60000
)
public
void
testStringMessageIdPrefixIsPreserved
()
throws
Exception
{
doTestMessageIdPreservation
(
"ID:msg-id-string:1"
);
}
public
void
doTestMessageIdPreservation
(
Object
messageId
)
throws
Exception
{
AmqpClient
client
=
createAmqpClient
();
AmqpConnection
connection
=
client
.
connect
();
AmqpSession
session
=
connection
.
createSession
();
AmqpSender
sender
=
session
.
createSender
(
"queue://"
+
getTestName
());
AmqpMessage
message
=
new
AmqpMessage
();
message
.
setRawMessageId
(
messageId
);
message
.
setText
(
"Test-Message"
);
sender
.
send
(
message
);
sender
.
close
();
QueueViewMBean
queue
=
getProxyToQueue
(
getTestName
());
assertEquals
(
1
,
queue
.
getQueueSize
());
AmqpReceiver
receiver
=
session
.
createReceiver
(
"queue://"
+
getTestName
());
receiver
.
flow
(
1
);
AmqpMessage
received
=
receiver
.
receive
(
5
,
TimeUnit
.
SECONDS
);
assertNotNull
(
"Should have got a message"
,
received
);
assertEquals
(
received
.
getRawMessageId
().
getClass
(),
messageId
.
getClass
());
assertEquals
(
messageId
,
received
.
getRawMessageId
());
receiver
.
close
();
connection
.
close
();
}
public
void
doTestMessageIdPreservationOnBrokerRestart
(
Object
messageId
)
throws
Exception
{
AmqpClient
client
=
createAmqpClient
();
AmqpConnection
connection
=
client
.
connect
();
AmqpSession
session
=
connection
.
createSession
();
AmqpSender
sender
=
session
.
createSender
(
"queue://"
+
getTestName
());
AmqpMessage
message
=
new
AmqpMessage
();
message
.
setRawMessageId
(
messageId
);
message
.
setText
(
"Test-Message"
);
message
.
setDurable
(
true
);
sender
.
send
(
message
);
sender
.
close
();
connection
.
close
();
restartBroker
();
QueueViewMBean
queue
=
getProxyToQueue
(
getTestName
());
assertEquals
(
1
,
queue
.
getQueueSize
());
connection
=
client
.
connect
();
session
=
connection
.
createSession
();
AmqpReceiver
receiver
=
session
.
createReceiver
(
"queue://"
+
getTestName
());
receiver
.
flow
(
1
);
AmqpMessage
received
=
receiver
.
receive
(
5
,
TimeUnit
.
SECONDS
);
assertNotNull
(
"Should have got a message"
,
received
);
assertEquals
(
received
.
getRawMessageId
().
getClass
(),
messageId
.
getClass
());
assertEquals
(
messageId
,
received
.
getRawMessageId
());
receiver
.
close
();
connection
.
close
();
}
}
activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/message/AMQPMessageIdHelperTest.java
0 → 100644
View file @
336714a4
This diff is collapsed.
Click to expand it.
activemq-blueprint/pom.xml
View file @
336714a4
...
...
@@ -22,7 +22,7 @@
<parent>
<groupId>
org.apache.activemq
</groupId>
<artifactId>
activemq-parent
</artifactId>
<version>
5.13.
2
</version>
<version>
5.13.
3
</version>
</parent>
<artifactId>
activemq-blueprint
</artifactId>
...
...
activemq-broker/pom.xml
View file @
336714a4
...
...
@@ -22,7 +22,7 @@
<parent>
<groupId>
org.apache.activemq
</groupId>
<artifactId>
activemq-parent
</artifactId>
<version>
5.13.
2
</version>
<version>
5.13.
3
</version>
</parent>
<artifactId>
activemq-broker
</artifactId>
...
...
activemq-broker/src/main/java/org/apache/activemq/advisory/AdvisoryBroker.java
View file @
336714a4
...
...
@@ -289,15 +289,14 @@ public class AdvisoryBroker extends BrokerFilter {
//in case of multiple matches
VirtualConsumerPair
key
=
new
VirtualConsumerPair
(
virtualDestination
,
destination
);
ConsumerInfo
i
=
brokerConsumerDests
.
get
(
key
);
if
(
consumerInfo
.
equals
(
i
))
{
if
(
brokerConsumerDests
.
remove
(
key
)
!=
null
)
{
if
(
consumerInfo
.
equals
(
i
)
&&
brokerConsumerDests
.
remove
(
key
)
!=
null
)
{
LOG
.
debug
(
"Virtual consumer pair removed: {} for consumer: {} "
,
key
,
i
);
fireVirtualDestinationRemoveAdvisory
(
context
,
consumerInfo
);
break
;
}
}
}
}
}
// ensure we don't modify (and loose/overwrite) an in-flight add advisory, so duplicate
info
=
info
.
copy
();
...
...
@@ -549,6 +548,7 @@ public class AdvisoryBroker extends BrokerFilter {
super
.
virtualDestinationAdded
(
context
,
virtualDestination
);
if
(
virtualDestinations
.
add
(
virtualDestination
))
{
LOG
.
debug
(
"Virtual destination added: {}"
,
virtualDestination
);
try
{
// Don't advise advisory topics.
if
(!
AdvisorySupport
.
isAdvisoryTopic
(
virtualDestination
.
getVirtualDestination
()))
{
...
...
@@ -592,22 +592,27 @@ public class AdvisoryBroker extends BrokerFilter {
//if no consumer info, we need to create one - this is the case when an advisory is fired
//because of the existence of a destination matching a virtual destination
if
(
info
==
null
)
{
//store the virtual destination and the activeMQDestination as a pair so that we can keep track
//of all matching forwarded destinations that caused demand
VirtualConsumerPair
pair
=
new
VirtualConsumerPair
(
virtualDestination
,
activeMQDest
);
if
(
brokerConsumerDests
.
get
(
pair
)
==
null
)
{
ConnectionId
connectionId
=
new
ConnectionId
(
connectionIdGenerator
.
generateId
());
SessionId
sessionId
=
new
SessionId
(
connectionId
,
sessionIdGenerator
.
getNextSequenceId
());
ConsumerId
consumerId
=
new
ConsumerId
(
sessionId
,
consumerIdGenerator
.
getNextSequenceId
());
info
=
new
ConsumerInfo
(
consumerId
);
//store the virtual destination and the activeMQDestination as a pair so that we can keep track
//of all matching forwarded destinations that caused demand
if
(
brokerConsumerDests
.
putIfAbsent
(
new
VirtualConsumerPair
(
virtualDestination
,
activeMQDest
),
info
)
==
null
)
{
if
(
brokerConsumerDests
.
putIfAbsent
(
pair
,
info
)
==
null
)
{
LOG
.
debug
(
"Virtual consumer pair added: {} for consumer: {} "
,
pair
,
info
);
info
.
setDestination
(
virtualDestination
.
getVirtualDestination
());
ActiveMQTopic
topic
=
AdvisorySupport
.
getVirtualDestinationConsumerAdvisoryTopic
(
info
.
getDestination
());
if
(
virtualDestinationConsumers
.
putIfAbsent
(
info
,
virtualDestination
)
==
null
)
{
LOG
.
debug
(
"Virtual consumer added: {}, for virtual destination: {}"
,
info
,
virtualDestination
);
fireConsumerAdvisory
(
context
,
info
.
getDestination
(),
topic
,
info
);
}
}
}
//this is the case of a real consumer coming online
}
else
{
info
=
info
.
copy
();
...
...
@@ -615,6 +620,7 @@ public class AdvisoryBroker extends BrokerFilter {
ActiveMQTopic
topic
=
AdvisorySupport
.
getVirtualDestinationConsumerAdvisoryTopic
(
info
.
getDestination
());
if
(
virtualDestinationConsumers
.
putIfAbsent
(
info
,
virtualDestination
)
==
null
)
{
LOG
.
debug
(
"Virtual consumer added: {}, for virtual destination: {}"
,
info
,
virtualDestination
);
fireConsumerAdvisory
(
context
,
info
.
getDestination
(),
topic
,
info
);
}
}
...
...
@@ -626,6 +632,7 @@ public class AdvisoryBroker extends BrokerFilter {
super
.
virtualDestinationRemoved
(
context
,
virtualDestination
);
if
(
virtualDestinations
.
remove
(
virtualDestination
))
{
LOG
.
debug
(
"Virtual destination removed: {}"
,
virtualDestination
);
try
{
consumersLock
.
readLock
().
lock
();
try
{
...
...
@@ -636,17 +643,18 @@ public class AdvisoryBroker extends BrokerFilter {
//find all consumers for this virtual destination
if
(
virtualDestinationConsumers
.
get
(
info
).
equals
(
virtualDestination
))
{
fireVirtualDestinationRemoveAdvisory
(
context
,
info
);
}
//check consumers created for the existence of a destination to see if they
//match the consumerinfo and clean up
for
(
VirtualConsumerPair
activeMQDest
:
brokerConsumerDests
.
keySet
())
{
ConsumerInfo
i
=
brokerConsumerDests
.
get
(
activeMQDest
);
if
(
info
.
equals
(
i
)
)
{
brokerConsumerDests
.
remove
(
activeMQDest
);
if
(
info
.
equals
(
i
)
&&
brokerConsumerDests
.
remove
(
activeMQDest
)
!=
null
)
{
LOG
.
debug
(
"Virtual consumer pair removed: {} for consumer: {} "
,
activeMQDest
,
i
);
}
}
}
}
}
}
}
finally
{
...
...
@@ -663,6 +671,7 @@ public class AdvisoryBroker extends BrokerFilter {
VirtualDestination
virtualDestination
=
virtualDestinationConsumers
.
remove
(
info
);
if
(
virtualDestination
!=
null
)
{
LOG
.
debug
(
"Virtual consumer removed: {}, for virtual destination: {}"
,
info
,
virtualDestination
);
ActiveMQTopic
topic
=
AdvisorySupport
.
getVirtualDestinationConsumerAdvisoryTopic
(
virtualDestination
.
getVirtualDestination
());
ActiveMQDestination
dest
=
info
.
getDestination
();
...
...
@@ -897,6 +906,7 @@ public class AdvisoryBroker extends BrokerFilter {
this
.
virtualDestination
=
virtualDestination
;
this
.
activeMQDestination
=
activeMQDestination
;
}
@Override
public
int
hashCode
()
{
final
int
prime
=
31
;
...
...
@@ -912,6 +922,7 @@ public class AdvisoryBroker extends BrokerFilter {
.
hashCode
());
return
result
;
}
@Override
public
boolean
equals
(
Object
obj
)
{
if
(
this
==
obj
)
...
...
@@ -935,6 +946,13 @@ public class AdvisoryBroker extends BrokerFilter {
return
false
;
return
true
;
}
@Override
public
String
toString
()
{
return
"VirtualConsumerPair [virtualDestination="
+
virtualDestination
+
", activeMQDestination="
+
activeMQDestination
+
"]"
;
}
private
AdvisoryBroker
getOuterType
()
{
return
AdvisoryBroker
.
this
;
}
...
...
activemq-broker/src/main/java/org/apache/activemq/broker/jmx/HealthView.java
View file @
336714a4
...
...
@@ -35,8 +35,8 @@ import org.apache.activemq.usage.SystemUsage;
public
class
HealthView
implements
HealthViewMBean
{
ManagedRegionBroker
broker
;
String
currentState
=
"Good"
;
private
ManagedRegionBroker
broker
;
private
volatile
String
currentState
=
"Good"
;
public
HealthView
(
ManagedRegionBroker
broker
)
{
this
.
broker
=
broker
;
...
...
@@ -87,6 +87,7 @@ public class HealthView implements HealthViewMBean {
while
(
dir
!=
null
&&
!
dir
.
isDirectory
())
{
dir
=
dir
.
getParentFile
();
}
long
storeSize
=
adapter
.
size
();
long
storeLimit
=
usage
.
getStoreUsage
().
getLimit
();
long
dirFreeSpace
=
dir
.
getUsableSpace
();
...
...
@@ -166,18 +167,30 @@ public class HealthView implements HealthViewMBean {
}
}
StringBuilder
currentState
=
new
StringBuilder
();
if
(
answer
!=
null
&&
!
answer
.
isEmpty
())
{
this
.
currentState
=
"Getting Worried {"
;
currentState
.
append
(
"Getting Worried {"
)
;
for
(
HealthStatus
hs
:
answer
)
{
currentState
+=
hs
+
" , "
;
currentState
.
append
(
hs
).
append
(
" , "
)
;
}
currentState
+=
" }"
;
currentState
.
append
(
" }"
)
;
}
else
{
this
.
currentState
=
"Good"
;
currentState
.
append
(
"Good"
)
;
}
this
.
currentState
=
currentState
.
toString
();
return
answer
;
}
@Override
public
String
healthStatus
()
throws
Exception
{
// Must invoke healthList in order to update state.
healthList
();
return
getCurrentStatus
();
}
/**
* @return String representation of the current Broker state
*/
...
...
activemq-broker/src/main/java/org/apache/activemq/broker/jmx/HealthViewMBean.java
View file @
336714a4
...
...
@@ -33,13 +33,26 @@ public interface HealthViewMBean {
* like <a href="http://jolokia.org/">jolokia</a> to access JMX.
*
* If in doubt, please use the {@link #getCurrentStatus()} method instead!
*
* @return a list of HealthStatus objects that describe the health of the Broker.
*/
@MBeanInfo
(
"List of warnings and errors about the current health of the Broker - empty list is Good!"
)
List
<
HealthStatus
>
healthList
()
throws
Exception
;
/**
* @return a String representation of current Broker health state.
*/
@MBeanInfo
(
"String representation of current Broker state"
)
String
healthStatus
()
throws
Exception
;
/**
* Warning, this method only return a value if the health or healthList method has previously
* been called. The value is not updated on its own and requires periodic calls to the health
* or healthList methods to refresh its value.
*
* @return String representation of the current Broker state
*/
@MBeanInfo
(
"String representation of current Broker state"
)
String
getCurrentStatus
();
}
activemq-broker/src/main/java/org/apache/activemq/broker/jmx/NetworkConnectorView.java
View file @
336714a4
...
...
@@ -26,102 +26,137 @@ public class NetworkConnectorView implements NetworkConnectorViewMBean {
this
.
connector
=
connector
;
}
@Override
public
void
start
()
throws
Exception
{
connector
.
start
();
}
@Override
public
void
stop
()
throws
Exception
{
connector
.
stop
();
}
@Override
public
String
getName
()
{
return
connector
.
getName
();
}
@Override
public
int
getMessageTTL
()
{
return
connector
.
getMessageTTL
();
}
@Override
public
int
getConsumerTTL
()
{
return
connector
.
getConsumerTTL
();
}
@Override
public
int
getPrefetchSize
()
{
return
connector
.
getPrefetchSize
();
}
@Override
public
int
getAdvisoryPrefetchSize
()
{
return
connector
.
getAdvisoryPrefetchSize
();
}
@Override
public
String
getUserName
()
{
return
connector
.
getUserName
();
}
@Override
public
boolean
isBridgeTempDestinations
()
{
return
connector
.
isBridgeTempDestinations
();
}
@Override
public
boolean
isConduitSubscriptions
()
{
return
connector
.
isConduitSubscriptions
();
}
@Override
public
boolean
isDecreaseNetworkConsumerPriority
()
{
return
connector
.
isDecreaseNetworkConsumerPriority
();
}
@Override
public
boolean
isDispatchAsync
()
{
return
connector
.
isDispatchAsync
();
}
@Override
public
boolean
isDynamicOnly
()
{
return
connector
.
isDynamicOnly
();
}
@Override
public
boolean
isDuplex
()
{
return
connector
.
isDuplex
();
}
@Override
public
boolean
isSuppressDuplicateQueueSubscriptions
()
{
return
connector
.
isSuppressDuplicateQueueSubscriptions
();
}
@Override
public
boolean
isSuppressDuplicateTopicSubscriptions
()
{
return
connector
.
isSuppressDuplicateTopicSubscriptions
();
}
@Override
public
void
setBridgeTempDestinations
(
boolean
bridgeTempDestinations
)
{
connector
.
setBridgeTempDestinations
(
bridgeTempDestinations
);
}
@Override
public
void
setConduitSubscriptions
(
boolean
conduitSubscriptions
)
{
connector
.
setConduitSubscriptions
(
conduitSubscriptions
);
}
@Override
public
void
setDispatchAsync
(
boolean
dispatchAsync
)
{
connector
.
setDispatchAsync
(
dispatchAsync
);
}
@Override
public
void
setDynamicOnly
(
boolean
dynamicOnly
)
{
connector
.
setDynamicOnly
(
dynamicOnly
);
}
@Override