-
Notifications
You must be signed in to change notification settings - Fork 1.5k
[AMQ-9769] Add name property to connector interface and MBean. #1493
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
ConnectionViewMBean con = broker.getConnection(conName); | ||
request.setAttribute(connectionName, conName); | ||
ConnectionViewMBean con = (ConnectionViewMBean) it.next(); | ||
request.setAttribute(connectionName, con.getClientId()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm a bit confused here. Is it con.getCliientId()
or connection name MBean constructed.
Can you please just add a comment here to explain the use of clientId
(instead of constructing with the name, and more) ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Heads up-- iirc, there are inconsistencies in connection name/id/clientId.
Some protocols only allow a single clientId-per-broker (mqtt) and some can in certain scenarios (jms). We need to be super sure about which is used to avoid a scenario where the web ui can have two entries for the same id in a list view.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's my point here. I'm a bit concerned by this connection name here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@jbonofre
Connection MBeans with connectionViewType=clientId
type use connection clientId
value for connectionName
parameter, so connectionName
MBean parameter value and clientId
connection property value should be equivalent.
This is the code responsible for connectionName
value in connection MBean:
Line 84 in 51553dd
byClientIdName = createObjectName("clientId", clientId); |
Line 117 in 51553dd
return BrokerMBeanSupport.createConnectionViewByType(connectorName, type, value); |
activemq/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/BrokerMBeanSupport.java
Line 181 in 51553dd
objectNameStr += ",connectionName="+ JMXSupport.encodeObjectNamePart(name); |
@mattrpav
If JMS allows multiple connections with same clientId
value, then it should have already caused problems by attempting to create multiple MBeans with the same name. If this was not an issue before my changes, then I will have to investigate more, because I thought that clientId
must always be unique and can not be shared between connections.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, imho, it would be great to add a little comment to frame use of con.getClientId()
.
Requested change:
The connectionId is the unique value within the broker for the connection. Side note: We should be registering JMX using that unique value instead of the clientId since clientId can be reused across connections and quickly swapped out if link stealing is enabled, but we won't dial up that change now. |
Done, but now ConnectionView returns the same value for both
And
So it may return either I propose to remove connection handling changes from this pull request and keep only changes to connector MBean and connector output in web UI. |
No description provided.