Skip to content

Commit 2e390b4

Browse files
jbertramtabish121
authored andcommitted
ARTEMIS-5893 further optimize ManagementService
Changes include: - Eliminating the use of ResourceNames values for key names when using well-known controls (e.g. address, queue, etc.). - Eliminating AMQP-specific registration methods in lieu of more general "untyped" methods since the Core broker doesn't know anything about AMQP-specific controls. - Deprecating the JMX-specific registration methods. The ManagementService itself will take care of JMX registration based on the broker's configuration. - Adding specific management methods to get names & counts for various controls instead of always creating lists. This should reduce GC pressure especially in high-load use-cases. - Leveraging filtering where appropriate for the management API. - Adding JavaDoc where method usage isn't obvious. - Eliminating Maps for server & Hawtio controls since they are singletons. - Restoring & deprecating getResource and getResources methods to ManagementService since they might be used by 3rd parties. - Eliminated all use of getResource & getResources methods throughout the code-base. - Eliminating a handful of unnecessary methods. - Eliminating unnecessary casts.
1 parent cc641e4 commit 2e390b4

File tree

54 files changed

+1588
-1214
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+1588
-1214
lines changed

artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/impl/JMSServerManagerImpl.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
import org.apache.activemq.artemis.api.core.SimpleString;
3838
import org.apache.activemq.artemis.api.core.TransportConfiguration;
3939
import org.apache.activemq.artemis.api.core.management.AddressControl;
40-
import org.apache.activemq.artemis.api.core.management.ResourceNames;
4140
import org.apache.activemq.artemis.api.jms.ActiveMQJMSClient;
4241
import org.apache.activemq.artemis.api.jms.JMSFactoryType;
4342
import org.apache.activemq.artemis.core.config.Configuration;
@@ -783,7 +782,7 @@ public synchronized boolean destroyTopic(final String name) throws Exception {
783782
@Override
784783
public synchronized boolean destroyTopic(final String name, final boolean removeConsumers) throws Exception {
785784
checkInitialised();
786-
AddressControl addressControl = server.getManagementService().getAddressControl(ResourceNames.ADDRESS + name);
785+
AddressControl addressControl = server.getManagementService().getAddressControl(name);
787786
if (addressControl != null) {
788787
for (String queueName : addressControl.getAllQueueNames()) {
789788
Binding binding = server.getPostOffice().getBinding(SimpleString.of(queueName));

artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/connect/bridge/AMQPBridgeManagementSupport.java

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -109,9 +109,9 @@ public static void registerBridgeManager(AMQPBridgeManager bridge) throws Except
109109
final ManagementService management = server.getManagementService();
110110
final AMQPBridgeManagerControlType control = new AMQPBridgeManagerControlType(server, bridge);
111111

112-
113-
management.registerInJMX(getBridgeManagerObjectName(management, brokerConnectionName, bridgeName), control);
114-
management.registerAMQPControl(getBridgeManagerResourceName(brokerConnectionName, bridgeName), control);
112+
management.registerUntypedControl(getBridgeManagerResourceName(brokerConnectionName, bridgeName),
113+
control,
114+
getBridgeManagerObjectName(management, brokerConnectionName, bridgeName));
115115
}
116116

117117
/**
@@ -128,8 +128,8 @@ public static void unregisterBridgeManager(AMQPBridgeManager bridge) throws Exce
128128
final ActiveMQServer server = bridge.getServer();
129129
final ManagementService management = server.getManagementService();
130130

131-
management.unregisterFromJMX(getBridgeManagerObjectName(management, brokerConnectionName, bridgeName));
132-
management.unRegisterAMQPControl(getBridgeManagerResourceName(brokerConnectionName, bridgeName));
131+
management.unregisterUntypedControl(getBridgeManagerResourceName(brokerConnectionName, bridgeName),
132+
getBridgeManagerObjectName(management, brokerConnectionName, bridgeName));
133133
}
134134

135135
public static String getBridgeManagerResourceName(String brokerConnectionName, String bridgeName) {
@@ -160,8 +160,9 @@ public static void registerBridgePolicyManager(AMQPBridgePolicyManager manager)
160160
final String bridgeName = bridgeManager.getName();
161161
final String policyName = manager.getPolicyName();
162162

163-
management.registerInJMX(getBridgePolicyManagerObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName), control);
164-
management.registerAMQPControl(getBridgePolicyManagerResourceName(brokerConnectionName, bridgeName, policyName), control);
163+
management.registerUntypedControl(getBridgePolicyManagerResourceName(brokerConnectionName, bridgeName, policyName),
164+
control,
165+
getBridgePolicyManagerObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName));
165166
}
166167

167168
/**
@@ -180,8 +181,8 @@ public static void unregisterBridgePolicyManager(AMQPBridgePolicyManager manager
180181
final String bridgeName = bridgeManager.getName();
181182
final String policyName = manager.getPolicyName();
182183

183-
management.unregisterFromJMX(getBridgePolicyManagerObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName));
184-
management.unRegisterAMQPControl(getBridgePolicyManagerResourceName(brokerConnectionName, bridgeName, policyName));
184+
management.unregisterUntypedControl(getBridgePolicyManagerResourceName(brokerConnectionName, bridgeName, policyName),
185+
getBridgePolicyManagerObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName));
185186
}
186187

187188
public static String getBridgePolicyManagerResourceName(String brokerConnectionName, String bridgeName, String policyName) {
@@ -216,11 +217,13 @@ public static void registerBridgeReceiver(AMQPBridgeReceiver receiver) throws Ex
216217
final String policyName = manager.getPolicyName();
217218

218219
if (receiver.getRole() == ReceiverRole.ADDRESS_RECEIVER) {
219-
management.registerInJMX(getBridgeAddressReceiverObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, receiver.getReceiverInfo().getLocalAddress()), control);
220-
management.registerAMQPControl(getBridgeAddressReceiverResourceName(brokerConnectionName, bridgeName, policyName, receiver.getReceiverInfo().getLocalAddress()), control);
220+
management.registerUntypedControl(getBridgeAddressReceiverResourceName(brokerConnectionName, bridgeName, policyName, receiver.getReceiverInfo().getLocalAddress()),
221+
control,
222+
getBridgeAddressReceiverObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, receiver.getReceiverInfo().getLocalAddress()));
221223
} else {
222-
management.registerInJMX(getBridgeQueueReceiverObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, receiver.getReceiverInfo().getLocalFqqn()), control);
223-
management.registerAMQPControl(getBridgeQueueReceiverResourceName(brokerConnectionName, bridgeName, policyName, receiver.getReceiverInfo().getLocalFqqn()), control);
224+
management.registerUntypedControl(getBridgeQueueReceiverResourceName(brokerConnectionName, bridgeName, policyName, receiver.getReceiverInfo().getLocalFqqn()),
225+
control,
226+
getBridgeQueueReceiverObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, receiver.getReceiverInfo().getLocalFqqn()));
224227
}
225228
}
226229

@@ -242,11 +245,11 @@ public static void unregisterBridgeReceiver(AMQPBridgeReceiver receiver) throws
242245
final String policyName = manager.getPolicyName();
243246

244247
if (receiver.getRole() == ReceiverRole.ADDRESS_RECEIVER) {
245-
management.unregisterFromJMX(getBridgeAddressReceiverObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, receiver.getReceiverInfo().getLocalAddress()));
246-
management.unRegisterAMQPControl(getBridgeAddressReceiverResourceName(brokerConnectionName, bridgeName, policyName, receiver.getReceiverInfo().getLocalAddress()));
248+
management.unregisterUntypedControl(getBridgeAddressReceiverResourceName(brokerConnectionName, bridgeName, policyName, receiver.getReceiverInfo().getLocalAddress()),
249+
getBridgeAddressReceiverObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, receiver.getReceiverInfo().getLocalAddress()));
247250
} else {
248-
management.unregisterFromJMX(getBridgeQueueReceiverObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, receiver.getReceiverInfo().getLocalFqqn()));
249-
management.unRegisterAMQPControl(getBridgeQueueReceiverResourceName(brokerConnectionName, bridgeName, policyName, receiver.getReceiverInfo().getLocalFqqn()));
251+
management.unregisterUntypedControl(getBridgeQueueReceiverResourceName(brokerConnectionName, bridgeName, policyName, receiver.getReceiverInfo().getLocalFqqn()),
252+
getBridgeQueueReceiverObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, receiver.getReceiverInfo().getLocalFqqn()));
250253
}
251254
}
252255

@@ -299,13 +302,15 @@ public static void registerBridgeSender(AMQPBridgeToSenderController sender) thr
299302
if (sender.getRole() == SenderRole.ADDRESS_SENDER) {
300303
final String address = control.getAddress();
301304

302-
management.registerInJMX(getBridgeAddressSenderObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, address), control);
303-
management.registerAMQPControl(getBridgeAddressSenderResourceName(brokerConnectionName, bridgeName, policyName, address), control);
305+
management.registerUntypedControl(getBridgeAddressSenderResourceName(brokerConnectionName, bridgeName, policyName, address),
306+
control,
307+
getBridgeAddressSenderObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, address));
304308
} else {
305309
final String fqqn = control.getFqqn();
306310

307-
management.registerInJMX(getBridgeQueueSenderObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, fqqn), control);
308-
management.registerAMQPControl(getBridgeQueueSenderResourceName(brokerConnectionName, bridgeName, policyName, fqqn), control);
311+
management.registerUntypedControl(getBridgeQueueSenderResourceName(brokerConnectionName, bridgeName, policyName, fqqn),
312+
control,
313+
getBridgeQueueSenderObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, fqqn));
309314
}
310315
}
311316

@@ -329,13 +334,13 @@ public static void unregisterBridgeSender(AMQPBridgeToSenderController sender) t
329334
if (sender.getRole() == SenderRole.ADDRESS_SENDER) {
330335
final String address = sender.getServerConsumer().getQueueAddress().toString();
331336

332-
management.unregisterFromJMX(getBridgeAddressSenderObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, address));
333-
management.unRegisterAMQPControl(getBridgeAddressSenderResourceName(brokerConnectionName, bridgeName, policyName, address));
337+
management.unregisterUntypedControl(getBridgeAddressSenderResourceName(brokerConnectionName, bridgeName, policyName, address),
338+
getBridgeAddressSenderObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, address));
334339
} else {
335340
final String fqqn = CompositeAddress.toFullyQualified(sender.getServerConsumer().getQueueAddress().toString(), sender.getServerConsumer().getQueueName().toString());
336341

337-
management.unregisterFromJMX(getBridgeQueueSenderObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, fqqn));
338-
management.unRegisterAMQPControl(getBridgeQueueSenderResourceName(brokerConnectionName, bridgeName, policyName, fqqn));
342+
management.unregisterUntypedControl(getBridgeQueueSenderResourceName(brokerConnectionName, bridgeName, policyName, fqqn),
343+
getBridgeQueueSenderObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, fqqn));
339344
}
340345
}
341346

0 commit comments

Comments
 (0)