gpt4 book ai didi

c# - 如何查看我们连接到的主机

转载 作者:太空宇宙 更新时间:2023-11-03 23:14:29 25 4
gpt4 key购买 nike

将 RabbitMQ 与节点集群结合使用,我像这样设置工厂和连接(使用 .NET 客户端):

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(';'));

Properties.Settings.Default.RabbitMQServers 使用分号分隔的服务器列表:

clust01;clust02;clust03

连接后,有没有办法查看它实际选择的哪个主机,有没有办法检测它何时可能发生变化(因为特定节点崩溃、停止或重新启动)? factory.HostName 只返回 localhost

编辑: 看来 connection.Endpoint.HostName 确实为您提供了实际的主机名,正如 @Evk 和 @wally 都指出的那样(谢谢)。但是有没有办法检测到变化?似乎IConnection有一个 ConnectionShutdown 事件,我猜 可能作为切换主机的一部分被调用,但没有相应的启动或重启事件(所以我假设它不会还不知道新主人)。还有 ConnectionBlockedConnectionUnblocked 事件,但它们没有记录,所以我不知道它们做了什么......

最佳答案

所以如何获取你已经知道的主机名,至于如何检测它何时发生变化:当你为你的工厂设置AutomaticRecoveryEnabled时,CreateConnection将真正返回实例AutorecoveringConnection。这个类实现了特殊的 IRecoverable 接口(interface),它有你需要的事件。因此,要检测自动恢复何时发生,请像这样订阅它:

var connection = factory.CreateConnection();
((IRecoverable)connection).Recovery += (sender, args) =>
{
// recovery happened
};

关于c# - 如何查看我们连接到的主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37729611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com