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

activemq 连接

activemq 连接_ActiveMQ网络连接器相关推荐

  1. ActiveMQ网络连接器

    这篇文章对我和任何对网络连接器如何为ActiveMQ工作感兴趣的ActiveMQ贡献者而言都是更多的内容. 我最近花了一些时间查看代码,并认为最好画一些快速的图表来帮助我记住我学到的东西,并在将来发现 ...

  2. 路由器连接帧中继网络的接口是(11),连接双绞线以太网的接口是(12)。 【答案】D B

    路由器连接帧中继网络的接口是(11),连接双绞线以太网的接口是(12). (11)A.AUI接口 B.RJ-45接口 C.Console接口 D.Serial接口 (12)A.AUI接口 B.RJ-4 ...

  3. PyTorch全连接ReLU网络

    PyTorch全连接ReLU网络 1.PyTorch的核心是两个主要特征: • 一个n维张量,类似于numpy,但可以在GPU上运行 • 搭建和训练神经网络时的自动微分/求导机制 本文将使用全连接的R ...

  4. linux命令行模式连接网络,centos命令行模式连接无线网络的过程

    1. 首先, 你的系统要能驱动无限网卡, 要是人品好的话, 系统已经自带了你的网卡的驱动程序. 不然就要先搞定无线网卡的驱动再说. 不然后面的步骤也就没必要了. 2. 看一下你的无线网卡叫什么: iw ...

  5. 解决Debian 9 iwlwifi固件缺失导致无法连接无线网络的问题

    解决Debian 9 iwlwifi固件缺失导致无法连接无线网络的问题 参考文章: (1)解决Debian 9 iwlwifi固件缺失导致无法连接无线网络的问题 (2)https://www.cnbl ...

  6. kali linux有线连接不见网络图标不见(解决方案)

    kali linux有线连接不见&&网络图标不见(解决方案) 参考文章: (1)kali linux有线连接不见&&网络图标不见(解决方案) (2)https://ww ...

  7. Ubuntu安装后无法连接无线网络

    [问题] Ubuntu安装后无法连接无线网络,无线连接的指示灯显示无线关闭状态(我的无线连接指示灯红灯位关闭,蓝色为开启),但是有线网络正常可用. [原因] 无线上网的驱动Ubuntu的无线上网驱动尚 ...

  8. 为终端服务连接配置网络级身份验证

    1.1.1 为终端服务连接配置网络级身份验证 在客户端连接到终端服务器时,可以通过在连接过程的早期提供用户身份验证来提高终端服务器的安全性.这种早期用户身份验证方法称为网络级身份验证. 网络级身份验证 ...

  9. Mac连接路由器后没有反应_无线WiFi无法连接到网络怎么办【解决方法】

    想必小伙伴们都或多或少遇到过无线 WiFi无法连接到网络 的情况.无线 WiFi无法连接到网络 的原因有很多,遇到这种情况我们应该从最基本的的原因开始排查. 密码输入错误 手机/电脑输入密码不正确是导 ...

最新文章

  1. 50 种系统免遭黑客侵袭的方法 [2017 年版]
  2. 对commonMark.js的理解学习
  3. 【openCV学习笔记】在Mac上配置openCV步骤详解
  4. 在Android应用外获取app的签名
  5. leetcode 274, 275. H-Index I, II(H 指数问题合集,线性查找/二分查找)
  6. 安装配置libmemcached
  7. 【渝粤教育】国家开放大学2018年秋季 0014-21T秘书学(一) 参考试题
  8. 计算机表格按性别排列,Excel表格性别数据-Excel 按性别(男女)排序
  9. 你的Android应用完全不需要那么多的权限
  10. iis swagger 部署_AspNet Core Api Restful +Swagger 发布IIS 实现微服务之旅 (二)
  11. 桂林理工大学计算机院导师信息,2018年新增硕士研究生指导教师名单公示
  12. ECRS分析原则(转载)
  13. 执行maven install 报如下错是什么原因呢?
  14. a标签去下划线 菜鸟教程_HTML下划线标签示例教程
  15. 17万用来助学,能做什么?
  16. react + canvas点线动画背景
  17. 主流部署端深度学习框架
  18. 使用H5 canvas画一个坦克
  19. 基于lora的化工企业人员定位解决方案
  20. IMDB的数据库结构

热门文章

  1. 别在被骗了!!!!!!
  2. GatewayMetricsFilter网关度量过滤器(服务监控)
  3. JS重写toString(),打印想要的值
  4. React向对象数组进行赋值
  5. 三种获取Class类型的实例的方法
  6. c mysql 编码_mysql编码转换 mysql编码设置详解
  7. mfc定义了变量仍提示未定义标识符_JavaScript-变量
  8. java_advanced_review(3)补充:利用网络套接字实现类似qq 的控制台通讯
  9. 索引---B+Tree
  10. jdk 加密_使用JDK的密码流的加密怪癖(以及该怎么做)