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 uri="static://(tcp://localhost:61626,tcp://localhost:61627)" />
一个新的DiscoverNetworkConnector将被配置,实例化,并作为连接器添加到BrokerService(这是处理许多ActiveMQ代理详细信息的主要类)。 从配置中组装DiscoverNetworkConnector时,您指定的URI用于创建DiscoveryAgent。 发现代理负责组装连接并处理打包为DiscoverEvents的故障转移事件。 确定选择哪个DiscoverAgent取决于DiscoverAgentFactory和指定的URI。 在“静态”的情况下,使用SimpleDiscoverAgent。 可能的URI列表中的每个URI都有不同的处理方式,并为其分配了自己的传输(此操作将在几秒钟内完成)。 这意味着,对于您列出的每个URI,将建立一个新的套接字,并且代理将尝试在每个套接字上建立网络连接器。 您可能想知道如何最好地实施故障转移? 在上述情况下,您将有多个连接,并且如果这些连接之一是到未监听的从属的连接,您将看到该连接失败,并且发现代理尝试再次建立连接。 这可能会无限持续下去,从而消耗资源。 另一种方法是对使用failover()逻辑的静态发现代理仅使用一个URI:
<networkConnector uri="static: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.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/372632.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《程序设计与数据结构》第3周学习总结

学号 20162317 《程序设计与数据结构》第3周学习总结 教材学习内容总结 第三章的内容相比之前两章更为具体&#xff0c;介绍的内容更为集中&#xff0c;主要说到了类和对象的问题&#xff0c;其中也仔细介绍了String类、Random类、Math类、NumberFormat类等类。此外也说到了与类…

Java中带有JWebSocket的WebServerSocket

首先&#xff0c;转到http://jwebsocket.org/下载2个软件包Server and Client。 如果要查看源代码&#xff0c;请下载源代码包。 服务器 解压缩服务器程序包。 转到“ conf”文件夹 选择“ jWebSocket.xml”文件打开 编辑“ jWebSocket.xml”文件&#xff0c;在标签<dom…

OpenCV入门指南----人脸检测

本篇介绍图像处理与模式识别中最热门的一个领域——人脸检测&#xff08;人脸识别&#xff09;。人脸检测可以说是学术界的宠儿&#xff0c;在不少EI&#xff0c;SCI高级别论文都能看到它的身影。甚至很多高校学生的毕业设计都会涉及到人脸检测。当然人脸检测的巨大实用价值也让…

matlab提取艾里斑,艾里斑:我不是雀斑

正是艾里斑&#xff0c;限制了光学仪器的精度我们知道凸透镜能把入射光会聚到它的焦点上&#xff0c;由于透镜的口径有一定大小&#xff0c;限制了光线的传播&#xff0c;所以凸透镜也会发生衍射。这导致透镜无法把光线会聚成无限小的点&#xff0c;而只会在焦点上形成具有一定…

mysql启动错误排查-无法申请足够内存

一般情况下mysql的启动错误还是很容易排查的&#xff0c;但是今天我们就来说一下不一般的情况。拿到一台服务器&#xff0c;安装完mysql后进行启动&#xff0c;启动错误如下&#xff1a; 有同学会说&#xff0c;哥们儿你是不是buffer pool设置太大了&#xff0c;设置了96G内存。…

loadrunner 关联

1、记住关联的位置&#xff08;之前&#xff09;&#xff0c;因为登录之前需要token&#xff0c;才能验证登录是否成功&#xff0c;所以&#xff0c;放在登录之前 转载于:https://www.cnblogs.com/zyp1/p/5692343.html

Akka STM –与STM Ref和Agent进行乒乓球比赛

乒乓是一个经典示例&#xff0c;其中2个玩家&#xff08;或线程&#xff09;访问共享资源–乒乓球桌并在彼此之间传递Ball&#xff08;状态变量&#xff09;。 使用任何共享资源&#xff0c;除非我们同步访问&#xff0c;否则线程可能会遇到潜在的死锁情况。 PingPong算法非常简…

JSP九大内置对象,七大动作,三大指令

JSP之九大内置对象 隐藏对象入门探索 Servlet 和JSP中输出数据都需要使用out对象。Servlet 中的out对象是通过getWriter()方法获取的。而JSP中没有定义out对象却可以直接使用。这是因为out是JSO的内置隐藏对象。JSP中的常见的9个内置隐藏对象如下 out输出流对象 隐藏对象out是…

可以添加自定义的Select控件

1.控件dom <select name"WebSiteTarget" id"WebSiteTarget" class"w1" onchange"editable2(this);"><option value"-1">请选择城市</option><option>福州</option><option>厦门</op…

innodb_io_capacity =innodb_lru_scan_depth*inoodb_buffer_pool_instances。与 checkpoint

innodb_lru_scan_depth:每个缓冲池刷脏页的能力 innodb_io_capacity: iops inoodb_buffer_pool_instances8 :缓冲池的个数 .关系&#xff1a; innodb_io_capacity > innodb_lru_scan_depth * inoodb_buffer_pool_instances 转载于:https://www.cnblogs.com/zengkefu/…

Java中的责任链模式

当应有几个处理器来执行某项操作并为这些处理器定义特定顺序时&#xff0c;就需要采用责任链设计模式。 在运行时处理器顺序的可变性也很重要。模式的UML表示如下&#xff1a; 处理程序定义处理器对象的一般结构。 这里的“ HandleRequest”是抽象处理器方法。 处理程序还具有自…

使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(六)-- 依赖注入

本篇将介绍Asp.Net Core中一个非常重要的特性&#xff1a;依赖注入&#xff0c;并展示其简单用法。 第一部分、概念介绍 Dependency Injection&#xff1a;又称依赖注入&#xff0c;简称DI。在以前的开发方式中&#xff0c;层与层之间、类与类之间都是通过new一个对方的实例进行…

基于JAX-WS的webService开发实例

最近因为工作原因接触到webService&#xff0c;所以记录下开发中碰到的问题&#xff0c;方便自己以后复习&#xff0c;顺便发扬一下开源精神。刚刚接触webServie如果有什么错误欢迎大家指正。 本地环境&#xff1a;myEclipse10.6 tomcat7 JDK7 jaxws-ri-2.2.10 第一步&#xff…

完整的WebApplication JSF EJB JPA JAAS –第2部分

视图–创建和JSF设置 本教程是第1部分的继续。 让我们创建一个新的Dynamic Web Project 。 如下图所示创建它&#xff1a; 注意&#xff1a;在某些时候&#xff0c;Eclipse会询问您是否要添加JSF功能&#xff08;自动完成&#xff09;&#xff0c;然后启用它。 就像下面的屏幕…

Android使用绘图Path总结

Path作为Android中一种相对复杂的绘图方式&#xff0c;官方文档中的有些解释并不是很好理解&#xff0c;这里作一个相对全面一些的总结&#xff0c;供日后查看&#xff0c;也分享给大家&#xff0c;共同进步。 1.基本绘图方法 addArc(RectF oval, float startAngle, float swee…

2017.3.23下午

下午通过对OSPF基本原理进一步的学习&#xff0c;对上午学习的内容进行了复习。 转载于:https://www.cnblogs.com/bgd140206206/p/6606192.html

编写Eclipse插件教程–第1部分

Eclipse是三个最受欢迎的Java开发IDE之一。 其成功的原因之一是其可扩展性。 对于任何知道该怎么做并且已经做到的人来说&#xff0c;编写eclipse插件都可以非常轻松快捷。 不幸的是&#xff0c;第一次在Eclipse中进行操作可能会非常耗时且令人沮丧。 Eclipse框架非常庞大&…

简单Window下 Android Studio的安装

&#xff08;1&#xff09;首先安装JDK 下载JDK 本人觉得官方网站下JDK比较慢&#xff0c;可以直接百度JDK&#xff0c;&#xff08;如果是64位 百度搜索记得64位&#xff09; 类似于这样的下载 安装可以看下教程&#xff0c;包括环境变量的配置 如何安装JDK &#xff08;2&…

日期处理一之NSLalendar的使用

一、日期和时间模式 日期和时间格式由日期和时间模式字符串组成&#xff0c;在日期和时间模式字符串中未加引号的A到‘Z’和a到‘z’被解释为模式字母&#xff0c;用来表示日期或时间。字符串元素&#xff0c;文本可以使用单引号&#xff08;‘’&#xff09;引起来使用。定义以…

十大最受欢迎的新Eclipse插件

Eclipse Marketplace仍然是发现有趣且相关的Eclipse插件的地方。 通过Eclipse Marketplace客户端&#xff0c;每月成功安装100,000多个基于Eclipse的产品。 我们提供了过去30天 以来所有时间最受欢迎的插件列表。 我认为看看过去12个月中最受欢迎的新插件会很有趣。 以下列出了…