diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/Connector.java b/activemq-broker/src/main/java/org/apache/activemq/broker/Connector.java index 314a092571..b099706a3d 100644 --- a/activemq-broker/src/main/java/org/apache/activemq/broker/Connector.java +++ b/activemq-broker/src/main/java/org/apache/activemq/broker/Connector.java @@ -20,6 +20,10 @@ import org.apache.activemq.broker.region.ConnectorStatistics; import org.apache.activemq.command.BrokerInfo; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; + /** * A connector creates and manages client connections that talk to the Broker. * @@ -62,18 +66,20 @@ public interface Connector extends Service { * @return true if clients should be updated when * a broker is removed from a broker */ - public boolean isUpdateClusterClientsOnRemove(); + public boolean isUpdateClusterClientsOnRemove(); + @Deprecated(forRemoval = true) int connectionCount(); /** * If enabled, older connections with the same clientID are stopped + * * @return true/false if link stealing is enabled */ boolean isAllowLinkStealing(); /** - * @return The comma separated string of regex patterns to match + * @return The comma separated string of regex patterns to match * broker names for cluster client updates */ String getUpdateClusterFilter(); @@ -86,4 +92,23 @@ public interface Connector extends Service { * @return true if connector is started */ public boolean isStarted(); + + public URI getConnectUri() throws IOException, URISyntaxException; + + public URI getPublishableConnectURI() throws Exception; + + public boolean isEnableStatusMonitor(); + + public URI getUri(); + + public URI getDiscoveryUri(); + + public boolean isAuditNetworkProducers(); + + public int getMaximumProducersAllowedPerConnection(); + + public int getMaximumConsumersAllowedPerConnection(); + + public int getConnectionCount(); + } diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnector.java b/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnector.java index 8cc6ee8869..ed0439075c 100644 --- a/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnector.java +++ b/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnector.java @@ -156,6 +156,7 @@ public void setServer(TransportServer server) { this.server = server; } + @Override public URI getUri() { if (uri == null) { try { @@ -301,6 +302,7 @@ public String getPublishableConnectString() throws Exception { return publishableConnectString; } + @Override public URI getPublishableConnectURI() throws Exception { return publishedAddressPolicy.getPublishableConnectURI(this); } @@ -375,6 +377,7 @@ public void setDiscoveryAgent(DiscoveryAgent discoveryAgent) { this.discoveryAgent = discoveryAgent; } + @Override public URI getDiscoveryUri() { return discoveryUri; } @@ -383,6 +386,7 @@ public void setDiscoveryUri(URI discoveryUri) { this.discoveryUri = discoveryUri; } + @Override public URI getConnectUri() throws IOException, URISyntaxException { if (server != null) { return server.getConnectURI(); @@ -519,6 +523,7 @@ public void setDisableAsyncDispatch(boolean disableAsyncDispatch) { /** * @return the enableStatusMonitor */ + @Override public boolean isEnableStatusMonitor() { return enableStatusMonitor; } @@ -610,6 +615,7 @@ public void setUpdateClusterFilter(String updateClusterFilter) { this.updateClusterFilter = updateClusterFilter; } + @Deprecated(forRemoval = true) @Override public int connectionCount() { return connections.size(); @@ -624,6 +630,7 @@ public void setAllowLinkStealing(boolean allowLinkStealing) { this.allowLinkStealing = allowLinkStealing; } + @Override public boolean isAuditNetworkProducers() { return auditNetworkProducers; } @@ -637,6 +644,7 @@ public void setAuditNetworkProducers(boolean auditNetworkProducers) { this.auditNetworkProducers = auditNetworkProducers; } + @Override public int getMaximumProducersAllowedPerConnection() { return maximumProducersAllowedPerConnection; } @@ -645,6 +653,7 @@ public void setMaximumProducersAllowedPerConnection(int maximumProducersAllowedP this.maximumProducersAllowedPerConnection = maximumProducersAllowedPerConnection; } + @Override public int getMaximumConsumersAllowedPerConnection() { return maximumConsumersAllowedPerConnection; } @@ -707,4 +716,9 @@ public void setAutoStart(boolean autoStart) { public boolean isAutoStart() { return autoStart; } + + @Override + public int getConnectionCount() { + return connections.size(); + } } diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/ConnectorView.java b/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/ConnectorView.java index 4493e06a96..705c9a5eb0 100644 --- a/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/ConnectorView.java +++ b/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/ConnectorView.java @@ -19,6 +19,8 @@ import org.apache.activemq.broker.Connector; import org.apache.activemq.command.BrokerInfo; +import java.net.URI; + public class ConnectorView implements ConnectorViewMBean { private final Connector connector; @@ -151,4 +153,82 @@ public boolean isAutoStart() { public boolean isStarted() { return this.connector.isStarted(); } + + @Override + public String getConnectURI() { + URI tmpConnectUri = null; + try { + tmpConnectUri = this.connector.getConnectUri(); + } catch (Exception e) {} + return (tmpConnectUri != null ? tmpConnectUri.toString() : null); + } + + @Override + public String getPublishableConnectURI() { + URI publishableConnectURI = null; + try { + publishableConnectURI = this.connector.getPublishableConnectURI(); + } catch (Exception e) {} + + return (publishableConnectURI != null ? publishableConnectURI.toString() : null); + } + + @Override + public String getBrokerInfoString() { + var tmpBrokerInfo = this.connector.getBrokerInfo(); + return (tmpBrokerInfo != null ? tmpBrokerInfo.toString() : null); + + } + + /** + * Returns true the status monitor is enabled + * + * @return true if status monitor is enabled + */ + @Override + public boolean isEnableStatusMonitor() { + return this.connector.isEnableStatusMonitor(); + } + + @Override + public String getURI() { + URI tmpURI = this.connector.getUri(); + return (tmpURI != null ? tmpURI.toString() : null); + } + + @Override + public String getDiscoveryURI() { + URI tmpDiscoveryURI = this.connector.getDiscoveryUri(); + return (tmpDiscoveryURI != null ? tmpDiscoveryURI.toString() : null); + } + + @Override + public boolean isAuditNetworkProducers() { + return this.connector.isAuditNetworkProducers(); + } + + /** + * Returns the number of maximum producers allowed per-connection + */ + @Override + public int getMaximumProducersAllowedPerConnection() { + return this.connector.getMaximumProducersAllowedPerConnection(); + } + + /** + * Returns the number of maximum consumers allowed per-connection + */ + @Override + public int getMaximumConsumersAllowedPerConnection() { + return this.connector.getMaximumConsumersAllowedPerConnection(); + } + + /** + * Returns the number of current connections + */ + @Override + public int getConnectionCount() { + return this.connector.connectionCount(); + } + } diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/ConnectorViewMBean.java b/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/ConnectorViewMBean.java index e089447c56..431268a243 100644 --- a/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/ConnectorViewMBean.java +++ b/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/ConnectorViewMBean.java @@ -18,8 +18,13 @@ import org.apache.activemq.Service; +import java.net.URI; + public interface ConnectorViewMBean extends Service { + // [AMQ-9815] Non-getter makes this a JMX operation v attribute + // TODO: Remove for 7.0 + @Deprecated(forRemoval = true) @MBeanInfo("Connection count") int connectionCount(); @@ -101,4 +106,40 @@ public interface ConnectorViewMBean extends Service { */ @MBeanInfo("Connector started") boolean isStarted(); + + /** + * @return The direct connect uri + */ + @MBeanInfo("Direct connect uri") + public String getConnectURI(); + + /** + * @return The publishable connect uri + */ + @MBeanInfo("Publishable connect uri") + public String getPublishableConnectURI(); + + @MBeanInfo("String of the BrokerInfo data") + public String getBrokerInfoString(); + + @MBeanInfo("StatusMonitor enabled") + public boolean isEnableStatusMonitor(); + + @MBeanInfo("Connector URI") + public String getURI(); + + @MBeanInfo("DiscoveryURI") + public String getDiscoveryURI(); + + @MBeanInfo("AuditNetworkProducers enabled") + public boolean isAuditNetworkProducers(); + + @MBeanInfo("Maximum number of producers allowed per-connection") + public int getMaximumProducersAllowedPerConnection(); + + @MBeanInfo("Maximum number of consumers allowed per-connection") + public int getMaximumConsumersAllowedPerConnection(); + + @MBeanInfo("Connection count") + public int getConnectionCount(); }