园林网站模板下载,手机h5页面制作软件,免费的短视频素材库,化工行业网站设计activemq 连接这篇文章对我以及对ActiveMQ的网络连接器的工作方式可能感兴趣的任何ActiveMQ贡献者都适用。 我最近花了一些时间查看代码#xff0c;并认为最好画一些快速的图表来帮助我记住我学到的知识#xff0c;并在将来发现问题时帮助将来确定在哪里进行调试。 如果我输入… activemq 连接 这篇文章对我以及对ActiveMQ的网络连接器的工作方式可能感兴趣的任何ActiveMQ贡献者都适用。 我最近花了一些时间查看代码并认为最好画一些快速的图表来帮助我记住我学到的知识并在将来发现问题时帮助将来确定在哪里进行调试。 如果我输入有误并且您想补充说明请在评论中添加。 首先通过在ActiveMQ配置文件中对其进行配置来设置网络连接器。 使用xbean库将此配置映射到相应的ActiveMQ bean对此我有一个单独的博客文章 其中确切解释了如何完成此工作。 要指定网络连接器请将networkConnectors/元素添加到配置文件然后添加networkConnector/ multicastNetworkConnector/或ldapNetworkConnector/ 。 这三种不同类型的网络连接器可用于建立代理网络其中networkConnector/最常见。 这是三个映射到Java类的方式 networkConnector/映射到org.apache.activemq.network.DiscoveryNetworkConnector multicastNetworkConnector/映射到org.apache.activemq.network.MulticastNetworkConnector ldapNetworkConnector/映射到org.apache.activemq.network.LdapNetworkConnector 每个继承自org.apache.activemq.network.NetworkConnector超级类型如下图所示 因此当您具有如下配置时 networkConnector uristatic://(tcp://localhost:61626,tcp://localhost:61627) / 一个新的DiscoverNetworkConnector将被配置实例化并将其作为连接器添加到BrokerService这是处理许多ActiveMQ代理详细信息的主要类。 从配置中组装DiscoverNetworkConnector时您指定的URI用于创建DiscoveryAgent。 发现代理负责组装连接并处理打包为DiscoverEvents的故障转移事件。 确定选择哪个DiscoverAgent取决于DiscoverAgentFactory和指定的URI。 在“静态”的情况下使用SimpleDiscoverAgent。 可能的URI列表中的每个URI都有不同的处理方式并为其分配了自己的传输此操作将在几秒钟内完成。 这意味着对于您列出的每个URI将建立一个新的套接字并且代理将尝试在每个套接字上建立网络连接器。 您可能想知道如何最好地实施故障转移 在上述情况下您将有多个连接并且如果这些连接之一是到未监听的从属的连接您将看到连接失败并且发现代理尝试再次建立连接。 这可能会无限持续下去从而消耗资源。 另一种方法是对使用failover逻辑的静态发现代理仅使用一个URI networkConnector uristatic:failover:(tcp://localhost:61626,tcp://localhost:61627) / 在这种情况下将仅创建一个传输并且故障转移逻辑将对其进行包装并了解两个URI。 如果不可用它将不会继续不必要地重试。 相反它将连接到它可以连接的任何一个并且仅在当前连接断开时才重新连接到故障转移URL。 请注意此方法在ActiveMQ 5.5.1.-fuse-00-06版本之前存在一个错误。 发现代理负责创建网桥但它将该职责委托给DiscoverListener。 在上面的示例中DiscoverListener接口由DiscoverNetworkConnector.onServiceAdd方法实现。 为了建立网桥将为本地代理使用VM和远程代理使用指定的协议在本例中为TCP打开传输。 一旦创建了本地和远程传输就可以在DiscoverNetworkConnector.createBridge…方法中组装网桥。 此方法再次使用Factory模式来查找要使用的网桥。 可能的桥接器实现如下所示 默认情况下当conductorSubscriptions true时将使用DurableConduitBridge。 管道订阅建立到远程代理的单个消息流以减少当远程主题有多个使用者时可能发生的重复。 默认情况下这很好用但是如果要在所有使用者之间平衡消息负载则需要将管道订阅设置为false请参阅FuseSource Broker上FuseSource 的文档以了解管道订阅的文档。 设置为false时将使用DemandForwardingBridge。 组装好网桥后即可在NetworkConnector.configureBridge…方法中对其进行配置。 在桥上组装并配置完所有组件之后就可以开始了。 一旦启动它将开始将代理程序Command对象发送到远程代理程序以进行自我标识建立会话并从中获取消费者信息。 从图中可以看到这是在DemandForwardingBridgeSupport.startRemoteBridge超类方法中。 如果您要调试网络连接器中的错误希望这有助于确定可能发生错误的位置。 参考 在代码内部 Christian Posta软件博客上来自JCG合作伙伴 Christian Posta的ActiveMQ网络连接器 。 翻译自: https://www.javacodegeeks.com/2012/06/activemq-network-connectors.htmlactivemq 连接