Mit RabbitMQ mit einem Cluster von Knoten, habe ich meine Fabrik und die Verbindung wie folgt auf (die .NET-Client):Wie sehen, welche Host wir
var factory = new ConnectionFactory()
{
UserName = Properties.Settings.Default.RabbitMQUser,
Password = Properties.Settings.Default.RabbitMQPassword,
HostnameSelector = new RandomHostNameSelector(),
AutomaticRecoveryEnabled = true
};
connection = factory.CreateConnection(Properties.Settings.Default.RabbitMQServers.Split(';'));
Wo Properties.Settings.Default.RabbitMQServers
eine halb- verwenden Doppelpunkt getrennte Liste von Servern:
clust01;clust02;clust03
nach dem Anschließen ist es eine Möglichkeit, die Host es tatsächlich aufgenommen, um zu sehen und ist es eine Möglichkeit zu erkennen, wenn das könnte (ändern, weil der bestimmte Knoten abgestürzt ist, wurde gestoppt, oder neu gestartet)? factory.HostName
gibt einfach localhost
zurück.
Bearbeiten: Es scheint connection.Endpoint.HostName
gibt Ihnen den tatsächlichen Hostnamen als @Evk und @Wally haben beide angegeben (danke). Aber gibt es eine Möglichkeit, eine Veränderung zu erkennen? Es scheint, dass IConnection hat eine ConnectionShutdown
Ereignis, das Ich denke, könnte als Teil der Vermittlung von Hosts aufgerufen werden, aber es gibt keine entsprechende Start-oder Neustart-Ereignis (so nehme ich an, es würde den neuen Host noch nicht kennen) . Es gibt auch ConnectionBlocked
und ConnectionUnblocked
Ereignisse, aber sie sind undokumentiert, also habe ich keine Ahnung, was sie tun ...
Ich nehme an, connection.Endpoint.HostName enthält, was Sie wollen? – Evk
@Evk - Du hast gepostet, während ich meine eigene Antwort eintippte. Ich denke du hast die richtige Antwort - aber ich kann es nicht testen. – wally