Against my better judgement, I'm responding one last time to what seems to be an act of elaborate trolling.
rabbit_peer_discovery_dns is a cluster discovery mechanism [1]. That is completely orthogonal
to client library connections and must be enabled separately.
RabbitMQ is messaging middleware. It supports multiple protocols, accepts connections from client libraries [2] (which is what I am
asking about: what client libraries do your apps use? Surely you don't run RabbitMQ for the kicks of it?),
CLI tools and peer nodes. [3] lists them all. If you are not sure what a client library is, it is that thing applications
use to connect to RabbitMQ and define topology, publish and consume. In the MySQL community the same type of library
are called database drivers. They dictate what
All those things can use IPv4 or IPv6. The fact that DNS peer discovery (which you probably don't use but we don't know,
you are really keen on not sharing relevant information) may perform AAAA queries does not mean that your apps
will, or CLI tools, for that matter.
I already stated earlier than for CLI-to-node and inter-node communication, including peer discovery, IPv6
exclusively can be used with the exception of epmd. It is an Erlang limitation.
There is no way RabbitMQ can control how *client libraries* (those Ruby, Java, Python, PHP, Go, and other things listed in [2]),
resolve hostnames and whether they prefer IPv4 or IPv6.
On the JVM there is a preference that at least allows for IPv4 to be preferred.
I could not find a way to do something similar for Ruby, Python. Go has a way that requires client library developer to make
the call.
In Python plenty of people recommend performing hostname resolution manually if IPv6 preference is desired, then connecting
using the discovered IPv6 address. I don't know of a RabbitMQ client library that does something like that.
Several happily resolve addressees using AAAA records and connect using IPv6 if target RabbitMQ only binds to an IPv6 interface.
So, using IPv6 to the extent that is possible today:
* Bind the node to an IPv6 only interface for every protocol enabled
* Add `-proto_dist inet6_tcp` to Erlang VM arguments, including CLI tools [4]
* If there is a way, configure all clients to use a hostname that resolves only via AAAA, or otherwise prefer IPv6. How that's done depends on the client library.
epmd and requests to it will still use IPv4 as mentioned above.
I'm out.