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;可以避…

js的深浅拷贝( 赋值后原值被覆盖的问题 )

1&#xff0c;浅拷贝&#xff08; 浅拷贝会复制所有引用对象的指针&#xff0c;而不是具体的值 &#xff09; 复制对象的所有属性都不是引用类型时&#xff0c;就可以使用浅拷贝 浅拷贝方式&#xff1a; Object.assign() [].slice()2&#xff0c;深拷贝&#xff08; 复制一个…

使用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…

根据浏览器navigator区分PC端还是移动端,区分操作系统,区分浏览器型号

1&#xff0c;区分PC端还是移动端 methods:{_isMobile() {let flag navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i)return flag;}, }, m…

mysql 用户授权_mysql添加、删除用户和授权用户

MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束):1.新建用户1.1 登录MYSQL&#xff1a;>mysql -u root -p>密码1.2 创建用户&#xff1a;mysql> insert into mysql.user(Host,User,Password) values("localhos…

2018年1月 常用的linux命令

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

vue-element-admin中 vuex 的使用

vue-element-admin 中 vuex 是模块化的。 登录流程 1&#xff0c;HTTP 配置&#xff08;utils/request.js&#xff09; 2&#xff0c;API 配置&#xff08;api/user.js&#xff09; import request from /utils/requestexport function login(username, password) {return …

javafx2_JavaFX 2 GameTutorial第4部分

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

mysql 实体类_Mysql生成实体类

-- 查询数据表结构SELECTCONCAT(‘"e.‘,SUBSTRING(COLUMN_NAME,1),‘,"‘),COLUMN_NAME,‘,‘,COLUMN_TYPE,column_commentFROMINFORMATION_SCHEMA.COLUMNSWHERE table_schema ‘xcb‘and table_name ‘t_product‘;-- 生成Java实体类SELECTCONCAT(‘Column(name&…

vue 兄弟组件之间的传值

1. 定义一个公共的bus.js //bus.js import Vue from vue export default new Vue()2. 在子组件A里用$emit发射数据 <script> // 引入公共的bug&#xff0c;来做为中间传达的工具 import Bus from ./bus.js export default {methods: {details(data) {//发射组件A的数据…

Java 8:声明接口中的私有方法和受保护的方法

引入Java 8时&#xff0c;我们可以在接口中使用默认方法。 此功能的主要驱动程序是允许扩展接口&#xff0c;同时保留对旧接口版本的向后兼容性。 一个示例是在现有Collection类中引入stream()方法。 有时&#xff0c;当我们想引入几种默认方法时&#xff0c;它们可能共享一些…

sysbench 1.0.6 mysql_Sysbench 测试mysql数据库性能(version:sysbench-1.1.0)

继上面安装完Mysql rpm 安装之后需要用sysbench对数据库进行性能测试&#xff1a;下载git clone https://github.com/akopytov/sysbench.git或者直接去github下载&#xff1a;https://github.com/akopytov/sysbench安装前准备除了上面Mysql rpm 安装提到的需要安装的四个rpm&am…

elementUI vxe-table结合使用(通用表格)

App.vue 样式 .my-main{margin: 20px; } .dfc{display: flex;flex-direction: column; } .dfr{display: flex;flex-direction: row; } .f1{flex: 1; } .fl{float: left; } .fr{float: right; } .baseColor{background-color:RGB(48,65,86);color:#fff; }父组件 <!-- --&g…

vue.config.js 配置

// 去除 console const UglifyJsPlugin require(uglifyjs-webpack-plugin) // const path require(path); 别名配置 // 图形化打包详情 const BundleAnalyzer require(webpack-bundle-analyzer).BundleAnalyzerPluginmodule.exports {publicPath: process.env.NODE_ENV p…

mysql主从维护_mysql主从日常管理维护

mysql主从日常管理维护1)查看从服务器状态为了防止复制过程中出现故障从而导致复制进程停止&#xff0c;我们需要经常检查从服务器的复制状态。一般使用show slave status命令来检查。例如&#xff1a;mysql> show slave status \G;*************************** 1. row ****…

JLBH示例2 –协调遗漏的会计处理

在这篇文章中&#xff1a; 在运行JLBH时考虑或不考虑协调遗漏 一个示例&#xff0c;以数字说明协同遗漏的效果 关于流量控制的讨论 这是我用来描述如果不考虑协调遗漏而进行测量的情况下的示例&#xff1a; 假设您正在等待火车&#xff0c;但由于前面的火车晚了&#xff0…

基于windows平台的命令行软件安装工具Chocolatey的安装

本文介绍Chocolatey的安装和使用 Chocolatey 这是基于.NET Framework 4以上的windows安装软件的命令行工具安装 第一步&#xff0c;打开你的powershell.exe&#xff0c;使用管理员方式运行 第二步&#xff0c;运行命令 Get-ExecutionPolicy如果返回 Restricted &#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…

windows 开启mysql日志记录_windows下mysql日志开启与查询

修改 my.ini文件加入以下语句(在没有设置的前提下)log-errord:/log/mysql/mysql_log_err.txtlogd:/log/mysql/mysql_log.txt#log-bind:/log/mysql/mysql_log_binlog-slow-queries d:/log/mysql/mysql_log_slow.txt使用以下命令查看是否启用了日志mysql>show variables like …