The change introduced with the https://github.com/MassTransit/MassTransit/issues/1784 change not only removed the ClustersMembers property from the IRabbitMqClusterConfigurator interface but introduces a regression in the nodes connection configuration.
Before the 6.2.4 (in 6.2.3 at least), the SSL settings (as well as port) were propagated to the instance of AmqpTcpEndpoint from the global settings during the invocation of the ConnectionFactory.CreateConnection.
We the replacement of the EndpointResolver we now always using the default SSL settings and have no way to override it in the configuration.
Also, it's better to consider bumping the minor version with such a set of changes:
Could you explain what it is you need, or post code that was working previously that no longer works? I'm happy to restore the ability to override the resolver, that change wasn't intentional. But the ability to specify host name and port was necessary.
@phatboyg we have:
I reviewed the code, and honestly I don't see how _this_ change would have eliminate the propagation of SslOptions to the endpoint. I looked at how RabbitMQ.Client is used, and it has always created a new SslOption for each endpoint in the cluster.
If you are saying that YOUR CODE previously did this, and now you can't, I missed that in the response above.
Regardless of how it happened, I'll commit a change that copies all the settings into each endpoint.
Once the develop packages are built, you're welcome to test it out and verify it meets your requirements. I really have no way to test your scenario.
If you are saying that YOUR CODE previously did this, and now you can't, I missed that in the response above.
I guess it's not relevant anymore with your change, but I will try to explain.
It's unrelated to a specific code.
Previously, ClustersMembers were used directly in several places and were only used as a source of hostnames, but not AmqpTcpEndpoint endpoints. During the creation of the connection, the configuration was propagated to the instance of the AmqpTcpEndpoint in the ConnectionFactory class. In 6.2.4 there is no way to propagate this configuration into the AmqpTcpEndpoint instance.
Oh, so by passing the array of names into the ConnectionFactory, the connection factory was copying the values the way I'm copying them now? Got it. I'll double check the source to make sure I have them all and call this good.
The issue was in these lines:
https://github.com/MassTransit/MassTransit/commit/4203a9c7821ac7e25b80a8423890316b9d8441b2#diff-ba44b1731e18eea95f2d2c916dc00e87
We have switched to another method overload in the ConnectionFactory class.
Previously the code have been using:
https://github.com/rabbitmq/rabbitmq-dotnet-client/blob/master/projects/RabbitMQ.Client/client/api/ConnectionFactory.cs#L419
New implementation:
https://github.com/rabbitmq/rabbitmq-dotnet-client/blob/master/projects/RabbitMQ.Client/client/api/ConnectionFactory.cs#L483
Right, and the change I just committed replicates that previous behavior by copying the Ssl and Port values from the settings.
@phatboyg Both issues seem to be resolved with the provided fix.
Thanks for so fast response!
Most helpful comment
@phatboyg Both issues seem to be resolved with the provided fix.
Thanks for so fast response!