activemq网络桥接

目的

这个由7部分组成的博客系列将分享有关如何创建ActiveMQ代理网络以实现高可用性和可伸缩性的信息。

为什么要建立经纪人网络?

ActiveMQ消息代理是企业中消息传递基础结构的核心组件。 它需要高度可用并且可以动态伸缩,以促进具有不同容量需求的动态异构分布式应用程序之间的通信。

如今,在商用硬件上扩展企业应用程序已成为当务之急。 ActiveMQ通过能够创建代理网络来分担负载而很好地满足了这一要求。

很多时候,跨地理分布的数据中心运行的应用程序需要协调消息。 使用代理网络可以更好地设计跨地理区域/数据中心的运行消息生产者和消费者。

ActiveMQ使用传输连接器,通过它与消息生产者和使用者进行通信。 但是,为了促进代理之间的通信,ActiveMQ使用网络连接器

网络连接器是两个代理之间的桥,允许按需转发消息。

换句话说,如果代理B1启动到代理B2的网络连接器,则如果B2上至少有一个消费者使用同一通道,则B1上的通道(队列/主题)上的消息将转发到B2。 如果将网络连接器配置为双工,则消息将按需从B2转发到B1。

这非常有趣,因为经纪人现在可以彼此动态通信。

在这个由7部分组成的博客系列中,我们将研究以下主题,以了解这一非常强大的ActiveMQ功能:

  1. 网络连接器基础知识–第1部分
  2. 双工网络连接器–第2部分
  3. 在本地/远程代理上对使用者进行负载平衡–第3部分
  4. 平衡远程代理上的使用者/订户的负载
    1. 队列:负载均衡远程并发使用者–第4部分
    2. 主题:远程代理上的负载均衡持久订阅–第5部分
  5. 存储/转发消息和使用者故障转移–第6部分
    1. 如何防止邮件被卡住
  6. 虚拟目的地–第7部分

为了表示应有的信誉,以下URL已帮助我创建了此博客文章系列。

  1. 使用ActiveMQ进行高级消息传递 by Dejan Bosanac [幻灯片32-36]
  2. Jakub Korab的 理解ActiveMQ Broker网络

先决条件

  1. ActiveMQ 5.8.0 –创建代理实例
  2. Apache Ant –运行ActiveMQ样本生产者和使用者进行演示。

为了便于演示,我们将在同一台计算机上使用多个ActiveMQ代理实例。

网络连接器基础知识–第1部分

下图显示了网络连接器的功能。 它桥接两个代理,并且如果由Broker-1建立消息,则根据需要将消息从Broker-1转发给Broker-2。

网络连接器可以是双工的,因此消息可以沿相反的方向转发; 从Broker-2到Broker-1,一旦Broker-1上存在某个使用者,并且该使用者存在于Broker-2中。 第2部分中的更多内容

在Broker-1和Broker-2之间设置网络连接器

  • 创建两个代理实例,例如broker-1和broker-2
Ashwinis-MacBook-Pro:bin akuntamukkala$ pwd
/Users/akuntamukkala/apache-activemq-5.8.0/bin
Ashwinis-MacBook-Pro:bin akuntamukkala$ ./activemq-admin create ../bridge-demo/broker-1
Ashwinis-MacBook-Pro:bin akuntamukkala$ ./activemq-admin create ../bridge-demo/broker-2

由于我们将在同一台计算机上运行两个代理,因此我们将broker-2配置为没有端口冲突。

  • 编辑

    /Users/akuntamukkala/apache-activemq-5.8.0/bridge-demo/broker-2/conf/activemq.xml
    1. 将传输连接器从61616更改为61626
    2. 将AMQP端口从5672更改为6672(此博客不使用它)
  • 编辑

    /Users/akuntamukkala/apache-activemq-5.8.0/bridge-demo/broker-2/conf/jetty.xml
    1. 将Web控制台端口从8161更改为9161
  • 配置从Broker-1到Broker-2的网络连接器
    将以下XML代码段添加到

    /Users/akuntamukkala/apache-activemq-5.8.0/bridge-demo/broker-1/conf/activemq.xml
networkConnectors><networkConnector name="T:broker1->broker2" uri="static:(tcp://localhost:61626)" duplex="false" decreaseNetworkConsumerPriority="true" networkTTL="2" dynamicOnly="true"><excludedDestinations><queue physicalName=">" /></excludedDestinations></networkConnector><networkConnector name="Q:broker1->broker2" uri="static:(tcp://localhost:61626)" duplex="false" decreaseNetworkConsumerPriority="true" networkTTL="2" dynamicOnly="true"><excludedDestinations><topic physicalName=">" /></excludedDestinations></networkConnector></networkConnectors>

上面的XML代码段配置了两个网络连接器“ T:broker1-> broker2”(仅队列中的主题除外)和“ Q:broker1-> broker2”(仅队列中的主题除外)。 这样可以很好地分隔用于主题和队列的网络连接器。

尽管我更喜欢指定[type]:-> [destination broker],但名称可以是任意的。

URI属性指定如何连接到broker-2

  • 开始经纪人2
Ashwinis-MacBook-Pro:bin akuntamukkala$ pwd
/Users/akuntamukkala/apache-activemq-5.8.0/bridge-demo/broker-2/bin
Ashwinis-MacBook-Pro:bin akuntamukkala$ ./broker-2 console
  • 开始经纪人1
Ashwinis-MacBook-Pro:bin akuntamukkala$ pwd
/Users/akuntamukkala/apache-activemq-5.8.0/bridge-demo/broker-1/bin
Ashwinis-MacBook-Pro:bin akuntamukkala$ ./broker-1 console

在broker-1上的日志显示了与broker-2建立的2个网络连接器

INFO | Establishing network connection from vm://broker-1?async=false&network=true to tcp://localhost:61626INFO | Connector vm://broker-1 StartedINFO | Establishing network connection from vm://broker-1?async=false&network=true to tcp://localhost:61626INFO | Network connection between vm://broker-1#24 and tcp://localhost/127.0.0.1:61626@52132(broker-2) has been established.INFO | Network connection between vm://broker-1#26 and tcp://localhost/127.0.0.1:61626@52133(broker-2) has been established.

broker-1上的Web控制台@ http:// localhost:8161 / admin / connections.jsp显示了已建立到broker-2的两个网络连接器

broker-2上的相同内容未显示任何网络连接器,因为broker-2没有启动任何网络连接器

让我们看看这个动作

让我们在broker-1的名为“ foo.bar”的队列上产生100条持久消息。

Ashwinis-MacBook-Pro:example akuntamukkala$ pwd
/Users/akuntamukkala/apache-activemq-5.8.0/example
Ashwinis-MacBook-Pro:example akuntamukkala$ ant producer -Durl=tcp://localhost:61616 -Dtopic=false -Ddurable=true -Dsubject=foo.bar -Dmax=100

broker-1 Web控制台显示已将100条消息放入队列“ foo.bar”

http:// localhost:8161 / admin / queues.jsp

让我们在broker-2的名为“ foo.bar”的队列上启动一个使用者。 这里要注意的重要一点是目标名称“ foo.bar”应该完全匹配。

Ashwinis-MacBook-Pro:example akuntamukkala$ ant consumer -Durl=tcp://localhost:61626 -Dtopic=false -Dsubject=foo.bar

我们发现来自broker-1的foo.bar队列的所有100条消息都转发到了broker-2的foo.bar队列使用方。

位于http:// localhost:8161 / admin / queues.jsp的broker-1管理控制台

broker-2管理控制台@ http:// localhost:9161 / admin / queues.jsp显示,我们启动的使用者已经使用了从Broker-1按需转发的所有100条消息

foo.bar队列上的broker-2消费者详细信息

broker-1管理控制台显示所有100条消息都已出队[已通过网络连接器转发到broker-2]。

“ foo.bar”队列上的broker-1使用者详细信息显示该使用者是按需创建的:[连接器名称] _ [目标代理] _inbound_

因此,我们已经了解了ActiveMQ中网络连接器的基础。

请继续关注第2部分…

翻译自: https://www.javacodegeeks.com/2014/04/activemq-network-of-brokers-explained.html

activemq网络桥接

activemq网络桥接_ActiveMQ –经纪人网络解释相关推荐

  1. activemq网络桥接_ActiveMQ –经纪人网络解释–第3部分

    activemq网络桥接 现在,我们已经在本博客系列的第1部分和第2 部分中了解了ActiveMQ网络连接器的基础,在第3部分中,我们将研究ActiveMQ如何平衡连接到代理网络的使用者. 介绍 当可 ...

  2. activemq网络桥接_ActiveMQ –经纪人网络解释–第4部分

    activemq网络桥接 在前面的第3部分中 ,我们已经看到ActiveMQ如何帮助将远程使用者与本地使用者区分开来,这有助于确定从消息生产者到使用者的较短路径. 在第4部分中,我们将研究如何在远程代 ...

  3. activemq网络桥接_ActiveMQ –经纪人网络解释–第5部分

    activemq网络桥接 在前面的第4部分中,我们已经看到了如何使用网络连接器在队列中平衡远程使用者的负载. 在第5部分中,如果主题上同时存在多个远程持久订阅者,我们将看到相同的配置如何工作. 考虑以 ...

  4. activemq网络桥接_ActiveMQ –经纪人网络解释–第2部分

    activemq网络桥接 在此博客中,我们将看到双工网络连接器如何工作. 在上一部分中,我们从broker-1和broker-2创建了一个网络连接器. 我们能够看到,当代理2上有一个使用者使用队列&q ...

  5. Linux——网络桥接

    什么是网络桥接? 在网络的使用中,有时需要搭建网络桥来实现网络桥接.例如在一台主机上制作一台虚拟机, 虚拟机是没有物理网卡的,这时虚拟机数据的发送和接收就需要通过主机上的物理网卡,需要主机 的内核来处 ...

  6. ActiveMQ –经纪人网络解释

    目的 这个由7部分组成的博客系列将分享有关如何创建ActiveMQ代理网络以实现高可用性和可伸缩性的信息. 为什么要建立经纪人网络? ActiveMQ消息代理是企业中消息传递基础结构的核心组件. 它需 ...

  7. ActiveMQ –经纪人网络解释–第4部分

    在前面的第3部分中 ,我们已经看到ActiveMQ如何帮助将远程使用者与本地使用者区分开来,这有助于确定从消息生产者到使用者的较短路径. 在第4部分中,我们将研究如何在远程代理上负载均衡并发使用者. ...

  8. ActiveMQ –经纪人网络解释–第5部分

    在前面的第4部分中,我们已经看到了如何使用网络连接器在队列中平衡远程使用者的负载. 在第5部分中,我们将看到如果在某个主题上有并发远程持久订阅者,则相同的配置将如何工作. 考虑以下配置-. 图1:经纪 ...

  9. ActiveMQ –经纪人网络解释–第3部分

    现在,我们已经在本博客系列的第1部分和第2 部分中了解了ActiveMQ网络连接器的基础,在第3部分中,我们将研究ActiveMQ如何平衡连接到代理网络的使用者. 介绍 当可以无序处理队列中的消息时通 ...

最新文章

  1. MyEclipse+Tomcat部署发布webapp
  2. 页面滑动至某处,固定导航。
  3. 004 .NetReactor 3.6.0.0之另类脱壳法
  4. 字符串操作(拷贝,比较,拼接等函数)
  5. java调用hbase_Java调用Hbase
  6. 17个可以节省你时间的CSS工具
  7. 如何在Python中安全地创建嵌套目录
  8. Js toString()方法笔记
  9. 多节点 devstack 部署
  10. 基于机器视觉的冲压金属瓶质量检测
  11. c++ stl模糊查找【找到key对应的值,找不到时返回最接近key的两个值】
  12. Atitit 提升开发效率法 fx t35 Atitit 提升开发效率法---开发方法架构简化法.docx 目录 1. 主要几个层次上简化开发 1 1.1. ,开发体系方法使用简单方法 1 1.2.
  13. java高级工程师哪些技术要掌握?
  14. 2018 考研 408 经验贴——总结篇
  15. LaTeX 插入图片 公式
  16. 荣耀畅玩7c能用鸿蒙吗,荣耀畅玩7C评测:人脸识别双摄 超高性价比
  17. 怎么在Excel中准确提取出姓名中的姓氏
  18. Cisco ❀ VRF(虚拟路由转发表)
  19. 可以搜python题答案的app-python实现百万答题自动百度搜索答案
  20. 微信转账 服务器错误,微信转账转错了怎么办 两种补救方法介绍

热门文章

  1. POJ - 3415 Common Substrings(长度不小于K的公共子串个数)
  2. 【贪心】失意(jzoj 2318)
  3. Mybatis中强大的功能元素:resultMap
  4. JavaFX如何将WritableImage转换为Image
  5. 关于Heap Dump
  6. 史上最全Redis面试题
  7. 深入.net平台的分层开发
  8. Struts文件上传与下载详解 _上传多个文件
  9. SpringCache与Redis
  10. oracle修改filesystem,(转):oracle、filesystem、backup日常巡检脚本