Hi Justin,
thanks for your reply.

If I got it right, the stealing link configuration will remain at acceptor 
level. Then, given an MQTT client "clientA" connected to the broker with the 
clientId "testClientId", and another MQTT client "clientB" wanting to connect 
to the broker with the same clientId ("testClientId"), we would expect a 
behavior like this:

  *   if the "clientB" tries to connect to the same acceptor used by the 
"clientA"
     *   in case allowLinkStealing on the acceptor is set to true: it will be 
able to connect, stealing the connection to the "clientA" (that will be 
disconnected)
     *   in case allowLinkStealing on the acceptor is set to false: it won't be 
able to connect  ("clientA" will remain connected)
  *   if the "clientB" tries to connect to another acceptor (not the same one 
used by the "clientA"): it won't be able to connect, regardless of the stealing 
link configuration

Can yuo confirm this?

Thanks,

Andrea
________________________________
Da: Justin Bertram <jbert...@apache.org>
Inviato: venerdì 25 agosto 2023 21:36
A: users@activemq.apache.org <users@activemq.apache.org>
Oggetto: Re: Messages balance between two MQTT connections open with same 
clientId on different acceptors

This should be resolved as a corollary change in the next release via
ARTEMIS-966 [1].

The solution is close to the second option you proposed. Clients using
different acceptors will *not* be able to connect concurrently. However,
the link-stealing behavior will be based on whatever is configured on the
acceptor which the client used.


Justin

[1] 
https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fissues.apache.org%2Fjira%2Fbrowse%2FARTEMIS-966&data=05%7C01%7C%7C3265c1f2fa064f2e910d08dba5b3d0d1%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C638285963947195876%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=dLqZfSV7kHH6fAWL%2BR2CnXxNdzPKzeRubSeWKF0TRAs%3D&reserved=0<https://issues.apache.org/jira/browse/ARTEMIS-966>

On Fri, Aug 25, 2023 at 3:20 AM andrea bisogno <bisoma...@hotmail.it> wrote:

> Hi support,
>
> I observed an unexpected behavior while testing the Artemis Broker (v
> 2.29.0):
>
> if we have two MQTT connections with the same clientId open at the same
> time (possible only with two clients opening two different connections with
> same clientId to different MQTT acceptors/ports, regardless of the stealing
> link configuration that is on acceptor base), messages are balanced among
> the two subscribers: this means each subscriber receives half of the data.
>
> In my opinion, the expected behavior should be one of these two:
>
>   *   if it is possible to keep open different MQTT connections with the
> same clientId on different acceptors, all the subscribers should receive
> all the data. This because there is no way to prevent a second MQTT client
> opens a connection to a different acceptor with a clientId already used,
> and in that case it is not correct to prevent the first client to receive
> all the messages
>   *   on the other side, probably it should not be possible to have two
> MQTT connections with the same clientId open at the same time (regardless
> of the target acceptor), and the stealing link configuration should became
> a global setting, and not a setting on acceptor base. In fact, in case we
> can only have a single connection with a given clientId for all the
> acceptors, the user should be free to choose which connection to keep open
> (the first one or the second one), regardless the target acceptor
>
> What do you think?
>
> Have a nice weekend,
>
> Andrea
>
>

Reply via email to