activemq 连接_ActiveMQ网络连接器

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 连接

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

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

相关文章

如何让fragment刷新界面_快速实现android版抖音主界面的心得

原文作者&#xff1a;DK_BurNIng如何快速确定竞品某个界面的实现方式&#xff1f;当你收到产品一个需求是模仿某个竞品且时间很短没有过多时间给你调研技术方案的时候&#xff0c;如何尽快确定这个功能的技术方案呢&#xff1f; 这里我给出我自己的一个小窍门&#xff0c;可以避…

使用JBoss Cool Store的终极云零售指南

我们一直在讨论为什么应用程序开发人员在App Dev Cloud Stack系列中不能再忽略其堆栈了。 带有JBoss Cool Store的App Dev Cloud 我们从头到尾讨论了各个层&#xff0c;但尚未为您提供除Red Hat Container Development Kit&#xff08;CDK&#xff09;之外的任何应用程序开发…

02.Python 3.6.4下载与安装

02.Python 3.6.4下载与安装 https://www.python.org/downloads/release/python-364/ Windows x86-64可执行文件安装程序视窗对于AMD64 / EM64T / x64&#xff0c;不是安腾处理器bee5746dc6ece6ab49573a9f54b5d0a131684744SIG我下载的是这个&#xff1a; https://www.python.or…

2018年1月 常用的linux命令

项目中经常用到的Linux命令 &#xff08;注意&#xff1a;linux命令要小写哦&#xff01;&#xff09; &#xff08;1&#xff09;、ls 显示当前目录下的文件 &#xff08;2&#xff09;、vi vim 进入编辑器&#xff0c;可以选择你要编辑的文档&#xff0c;一般我们将项目打…

javafx2_JavaFX 2 GameTutorial第4部分

javafx2介绍 这是与JavaFX 2游戏教程相关的六个部分系列的第四部分。 如果您错过了第1部分 &#xff0c; 第2部分或第3部分 &#xff0c;我建议您在开始本教程之前仔细阅读它们。 回顾一下&#xff0c;在第3部分中&#xff0c;我为您提供了许多经典街机风格游戏以及所使用的不同…

vue项目 乐橙云 轻应用直播SDK imouplayer.js

官网案例&#xff1a;https://open.imoulife.com/book/light/sdk.html 文档&#xff1a; https://open.imou.com/developDoc/31 1&#xff0c;下载 对应的资源 https://open.imoulife.com/book/readme/upload.html 2&#xff0c;引入资源 2.1 把下载的资源(static&#xff0c…

jmx 复用 jmx_JMX:一些入门说明

jmx 复用 jmxJMX&#xff08;Java管理扩展&#xff09;是一种J2SE技术&#xff0c;可以管理和监视Java应用程序。 基本思想是实现一组管理对象&#xff0c;并将实现注册到平台服务器&#xff0c;在平台服务器上&#xff0c;可以使用一组连接器或适配器从本地或远程调用这些实现…

git 上下载的项目在本地安装依赖时报错 Could not resolve dependency

安装依赖时报错&#xff1a;无法安装依赖 看报错里面的提示&#xff1a;this command with --force, or --legacy-peer-deps –force 会无视冲突&#xff0c;并强制获取远端npm库资源&#xff0c;即使本地有资源也会覆盖掉&#xff1b;–legacy-peer-deps&#xff1a;安装时…

python_fullstack基础(十一)-常用模块

python常用模块 re模块 一、正则表达式 在线测试工具 http://tool.chinaz.com/regex/ 1、字符组 &#xff1a; [字符组] 在同一个位置可能出现的各种字符组成了一个字符组&#xff0c;在正则表达式中用[]表示 字符分为很多类&#xff0c;比如数字、字母、标点等等。 假如你现在…

npm 安装依赖遇到的问题

npm npm的服务器位于国外可能会影响安装 cnpm 淘宝团队做的国内镜像 // 安装 cnpm npm install cnpm -g --registryhttps://registry.npm.taobao.org // 查看版本 cnpm -v // 查 npm 的源 npm config get registry一、cnpm -v 在 cmd 中能识别&#xff0c;但是 VsCode 无法识别…

maven 父maven_Maven的鸟瞰图

maven 父maven我们每天要做的一件事是使用Maven通过发出诸如mvn install之类的构建命令来构建我们的项目。 然后&#xff0c;Maven查看我们项目的配置文件&#xff08;亲切地称为POM&#xff09;&#xff0c;神奇地找出要执行的操作&#xff0c;并且&#xff0c;嘿&#xff0c;…

mysql断网_断网的情况上如何访问本机的mysql

断网的情况下怎么访问本机的mysql我发现把网络断掉后mysql就不能访问了。使用phpmyadmin(http://localhost/phpmyadmin/index.php?)访问&#xff0c;输入用户名和密码后点击登陆&#xff0c;就会出现“#2002 Cannot log in to the MySQL server”错误。使用命令行登陆&#xf…

Py IO model

事件驱动模型 上节的问题&#xff1a; 协程&#xff1a;遇到IO操作就切换。 但什么时候切回去呢&#xff1f;怎么确定IO操作完了&#xff1f; 很多程序员可能会考虑使用“线程池”或“连接池”。“线程池”旨在减少创建和销毁线程的频率&#xff0c;其维持一定合理数量的线程&a…

Fiddler 扒取微信小程序的图片

安装 Fiddler http://www.downza.cn/soft/234727.html Tools-options配置 如果无法抓取到PC微信小程序 解决办法&#xff1a; 打开小程序&#xff0c;任务管理器找到小程序所在位置&#xff0c;删除文件内容 一般路径为\Tencent\WeChat\XPlugin\Plugins\WMPFRuntime 删除…

JLBH – Java延迟基准线束介绍

在这篇文章中&#xff1a; 什么是JLBH 我们为什么写JLBH JMH和JLBH之间的区别 快速入门指南 什么是JLBH&#xff1f; JLBH是可用于测量Java程序中的延迟的工具。 它具有以下功能&#xff1a; 旨在运行比微型基准测试更大的代码。 适用于使用异步活动&#xff08;如生产者…

mysql 5.7 mts_mysql5.7 中启用MTS后error log中大量Note日志分析

mysql5.7,启用基于logical_clock的多线程复制,发现error日志增长很快&#xff0c;查看日志发现大量关于多线程复制的Note级别日志。1234567891011121314152018-07-03T03:22:01.63837108:00 8941 [Note] Multi-threaded slave statistics for channel : seconds elapsed 298; e…

Nginx 怎么给一台服务器,配置两个域名?详细的解说+截图教程

一、 环境、条件准备 一台云服务器&#xff08;我的是腾讯的centos7&#xff09; 至少两个域名。&#xff08;我的是simuhunluo.xyz和simuhunluo.top。这两个域名之间没有任何关系&#xff0c;我是在阿里用两个账号分别注册的。&#xff09; 云服务器上面已经搭建了ngin…

extjs6 mvvm_ZK 6中的MVVM初探

extjs6 mvvmMVVM与MVC 在上一篇文章中&#xff0c;我们已经看到Ajax框架ZK如何采用CSS选择器启发的Controller来在View中连接UI组件并监听它们的事件。 在此ZK MVC模式下&#xff0c; View中的UI组件无需绑定到任何Controller方法或数据对象。 使用选择器模式作为将View状态和事…

多线程 调用 axis 报错_java笔记录(三、多线程)

1、进程和线程&#xff1a;进程&#xff1a;正在进行的程序。每一个进程执行都有一个执行顺序&#xff0c;该顺序是一个执行路径&#xff0c;或者叫一个控制单元。线程&#xff1a;进程内部的一条执行路径或者一个控制单元。两者的区别&#xff1a;一个进程至少有一个线程进程在…

使用PropertyPlaceholderConfigurer读取属性文件

1.简介 通常&#xff0c;当我们考虑将多个应用程序部署到生产环境之前在其中部署服务器时&#xff0c;可以在外部属性文件中配置特定于环境的参数 。 它可能是数据库详细信息&#xff0c;对于测试服务器和生产服务器而言&#xff0c;这是不同的。 因此最好选择将数据库配置文件…