Red Hat 建议使用 AMQPNetLite by Azure 团队作为客户端,以便在从基于 .Net 的应用程序连接到代理时连接到 JBoss AMQ - https://access.redhat.com/documentation/en-us/red_hat_amq/7.0/html-single/using_the_amq_.net_client/index
JBoss AMQ 基于 Apache Artemis,它支持客户端的自动故障转移处理 - https://activemq.apache.org/artemis/docs/1.0.0/ha.html#failover-mode 但客户端的这种透明故障转移处理似乎适用于 JMS API,而不是 .Net API。
AMQPNetLite似乎不会自动处理故障转移 - https://github.com/Azure/amqpnetlite/issues/33#issuecomment-144798871
Red Hat 的建议是什么,或者 .Net 客户端正确处理故障转移的任何记录过程是什么?是否有内置机制或必须手动编码?
在此类故障转移期间是否会引发任何异常,以便客户端可以识别故障转移已发生并且备份服务器不是活动服务器?
如何处理故障转移取决于客户端。Apache Artemis提供了自己的客户端,该客户端根据您链接的文档处理故障转移。AMQPNetLite客户端不随代理一起提供,因此是100%独立的。 根据链接的 AMQPNetLite 问题,它似乎不支持故障转移。 欲了解更多信息,我建议您向AMQPNetLite社区询问(即使用他们的标签而不是像activemq-artemis
和jboss-amq
这样的经纪人标签(。
如果你不想自己使用AmqpNetLite实现这一点,你可以尝试社区驱动的ArtemisNetClient。它建立在AmqpNetLite之上,并内置了自动恢复功能--> https://havret.github.io/dotnet-activemq-artemis-client/docs/auto-recovery