ActiveMq学习⑦__ActiveMq协议

这篇具有很好参考价值的文章主要介绍了ActiveMq学习⑦__ActiveMq协议。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题一、默认的61616端口如何更改?
问题二、你生产上的链接协议如何配置的?使用tcp吗?

ActiveMQ 支持的client-broker 通讯协议有:TVP、NIO、UDP、SSL、Http(s)、VM。
其中配置TransportConnector 的文件在ActiveMQ 安装目录的conf/activemq.xml 中的标签之内。
activemq 传输协议的官方文档:http://activemq.apache.org/configuring-version-5-transports.html

实际配置

vim activemq.xml
ActiveMq学习⑦__ActiveMq协议,activemq,学习

  • 先备份
    [root@tde conf]# cp activemq.xml activemq.xml.bk
  • 打开文件
    vim activemq.xml

The transport connectors expose ActiveMQ over a given protocol to clients and other brokers. For more information, see:
暴露了ActiveMq按照它给定的协议对于客户端和其他的mq更多的信息参考以下链接
http://activemq.apache.org/configuring-transports.html

     <transportConnectors>
112             <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
113             <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
114             <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
115             <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
116             <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
117             <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
118         </transportConnectors>

ActiveMq学习⑦__ActiveMq协议,activemq,学习

ActiveMq协议有哪些?

ActiveMq学习⑦__ActiveMq协议,activemq,学习

Transmission Control Protocol(TCP)

Transmission Control Protocol(TCP)

  • 这是默认的Broker配置,TCP的Client监听端口61616
  • 在网络传输数据前,必须要先序列化数据,消息是通过一个叫wire protocol的来序列化成字节流。
    • 默认情况下ActiveMQ把wire protocol叫做Open Wire ,它的目的是促使网络上的效率和数据快速交互。
  • TCP连接的URI形式如:tcp://HostName:port?key=value&key=value,后面的参数是可选的。
  • TCP传输的的优点:
    • TCP协议传输可靠性高,稳定性强
    • 高效率:字节流方式传递,效率很高
    • 有效性、可用性:应用广泛,支持任何平台
  • 关于Transport协议的可选配置参数可以参考官网https://activemq.apache.org/tcp-transport-reference
    ActiveMq学习⑦__ActiveMq协议,activemq,学习

New I/O API Protocal (NIO)

Same as the TCP transport, except that the New I/O (NIO) package is used, which may provide better performance. The Java NIO package should not be confused with IBM’s AIO4J package.
To switch from TCP to NIO, simply change the scheme portion of the URI. Here’s an example as defined within a broker’s XML configuration file.
与TCP传输相同,只是使用了新I/O(NIO)包,这可能会提供更好的性能。Java NIO包不应与IBM的AIO4J包混淆。
要从TCP切换到NIO,只需更改URI的scheme部分。下面是一个在代理的XML配置文件中定义的示例。

<broker>
  ...
  <transportConnectors>
    <transportConnector name="nio" uri="nio://0.0.0.0:61616"/>  
  </<transportConnectors>
  ...
</broker>

Trying to use nio transport url on the client side will instantiate the regular TCP transport. For more information see the NIO Transport
Reference 尝试在客户端使用nio传输url将实例化常规TCP传输。有关更多信息,请参阅NIO传输参考

  • NIO协议和TCP协议类似,但NIO更侧重于底层的访问操作。它允许开发人员对同一资源可有更多的client调用和服务器端有更多的负载。
  • 适合使用NIO协议的场景:
    • 可能有大量的Client去连接到Broker上,一般情况下,大量的Client去连接Broker是被操作系统的线程所限制的。因此,NIO的实现比TCP需要更少的线程去运行,所以建议使用NIO协议。
    • 可能对于Broker有一个很迟钝的网络传输,NIO比TCP提供更好的性能。
  • NIO连接的URI形式:nio://hostname:port?key=value&key=value
  • 关于Transport协议的可选配置参数可以参考官网http://activemq.apache.org/configuring-version-5-transports.html

AMQP协议

Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同开发语言等条件限制。

<transportConnectors>
   <transportConnector name="amqp" uri="amqp://0.0.0.0:5672"/>
</transportConnectors>

STOMP协议

STOP,Streaming Text Orientation Message Protocol,是流文本定向消息协议,是一种为MOM(Message Oriented Middleware,面向消息中间件)设计的简单文本协议。

<transportConnectors>
   <transportConnector name="stomp" uri="stomp://localhost:61613"/>
</transportConnectors>

Secure Sockets Layer Protocol(SSL)

安全加固协议
ssl://localhost:61616?trace=false

<transportConnectors>
   <transportConnector name="ssl" uri="ssl://localhost:61618?trace=true"/>
</transportConnectors>

MQTT协议

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,据说有可能成为物联网的重要组成部分。该协议支持所有平台,更多的是偏硬件,几乎可以把所有联网物品和外部连接起来,被用来当作传感器和致动器(比如通过Twitter让房屋联网)的通信协议。
扩展:https://github.com/fusesource/mqtt-client

WS协议

This transport uses the new HTML5 WebSockets to exchange messages with the broker. For more information see the WebSockets Transport Reference
此传输使用新的HTML5WebSockets与代理交换消息。有关更多信息,请参阅WebSockets传输参考

<transportConnectors>
  <transportConnector name="websocket" uri="ws://0.0.0.0:61614"/>
</transportConnectors>

小总结

ActiveMq学习⑦__ActiveMq协议,activemq,学习

NIO 协议案例

  • NIO配置

  • cp activemq.xml activemq.xml.bk 备份

  • ./activemq stop 停止mq运行

  • 修改配置文件
    ActiveMq学习⑦__ActiveMq协议,activemq,学习ActiveMq学习⑦__ActiveMq协议,activemq,学习
    ActiveMq学习⑦__ActiveMq协议,activemq,学习

  • NIO测试

  • 测试添加nio协议后,默认tcp协议是否支持

生产者

ActiveMq学习⑦__ActiveMq协议,activemq,学习ActiveMq学习⑦__ActiveMq协议,activemq,学习
消费者

ActiveMq学习⑦__ActiveMq协议,activemq,学习
ActiveMq学习⑦__ActiveMq协议,activemq,学习

  • 测试添加nio协议

public static final String ACTIVEMQ_URL = “nio://IP地址:61618”; //测试nio 协议

生产者
ActiveMq学习⑦__ActiveMq协议,activemq,学习
ActiveMq学习⑦__ActiveMq协议,activemq,学习
消费者
ActiveMq学习⑦__ActiveMq协议,activemq,学习
ActiveMq学习⑦__ActiveMq协议,activemq,学习

NIO 案例演示增强

  • 上述NIO性能不错了,如何进一步优化?
  • 问题

    • URL格式以nio 开头,表示这个端口使用以TCP协议为基础的NIO网络IO模型
    • 但是这样的设置方式,只能是这个端口支持OpenWire协议
  • 那么我们怎么既让这个端口支持NIO网络IO模型,又让它支持多个协议呢?

  • 解决

    • 使用auto关键字
    • 使用+符号来为端口设置多种特性
    • 如果我们即需要某一个端口支持NIO网络IO模型,又需要它支持多个协议
      • auto : 争对所有协议,他会识别我们是什么协议
      • nio :使用NIO网络IO模型
  • 小知识

    • activeMQ中的openwire协议就是对应的TCP协议
      • 【原理】:mq将消息序列化形成字节流此过程称为openwire
      • 【目的】:促使网络上的效率和数据快速交互;
    • tcp特点:
      • 传输可靠性高,稳定性强
      • 高效性,字节流传输,效率很高
      • 有效性
      • 可用性:应用广泛,支持任何平台
    • nio特点:
      • 基于TCP协议之上,进行了扩展和优化,具有更好的性能

ActiveMq学习⑦__ActiveMq协议,activemq,学习文章来源地址https://www.toymoban.com/news/detail-745617.html

  • autoNIO增强
    ActiveMq学习⑦__ActiveMq协议,activemq,学习
    要通过NIOTCP连接配置ActiveMQ自动连线格式检测,请使用auto+NIO传输前缀。例如,在XML文件中添加以下传输配置:
<transportConnector name="auto+nio" uri="auto+nio://localhost:5671"/>
  • 修改配置文件
    ActiveMq学习⑦__ActiveMq协议,activemq,学习
  • 配置成功
    ActiveMq学习⑦__ActiveMq协议,activemq,学习
  • 代码实现 (nio 切换tcp 同样可以支持,协议的适配性获得极大提升)
    ActiveMq学习⑦__ActiveMq协议,activemq,学习

到了这里,关于ActiveMq学习⑦__ActiveMq协议的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python接收activemq服务器的消息,转发到另外两个activemq服务器消息中

    要使用Python接收ActiveMQ服务器的消息并将其转发到另外两个ActiveMQ服务器,您可以使用Python的pika库。pika是一个流行的AMQP(高级消息队列协议)客户端库,可以与ActiveMQ等消息代理进行交互。 以下是一个简单的示例,演示如何使用pika从ActiveMQ服务器接收消息,并将其转发到另外

    2024年01月19日
    浏览(34)
  • 应该下那个 ActiveMQ

    最近在搞 ActiveMQ 的时候,发现有 2 个 ActiveMQ 可以下载。 应该下那个呢? JMS 即Java Message Service,是JavaEE的消息服务接口。 JMS主要有两个版本:1.1和2.0。 2.0和1.1相比,主要是简化了收发消息的代码。 所谓消息服务,就是两个进程之间,通过消息服务器传递消息。 实际上Acti

    2024年02月08日
    浏览(27)
  • 什么是 Apache ActiveMQ?

    ActiveMQ 是一种流行的消息传递服务,可促进企业系统中大规模的不同数据。在本 ActiveMQ 教程中,我们概述了 ActiveMQ、它的优点、它的工作原理以及何时应该使用它。 什么是 ActiveMQ? ActiveMQ 是一种流行的开源消息传递服务,它构建在 Java 之上。它用作面向消息的中间件 ( MoM

    2024年02月07日
    浏览(38)
  • Activemq存储KahaDb详解

    ActiveMQ在不提供持久化的情况下,数据保存在内存中,一旦应用崩溃或者重启之后,数据都将会丢失,这显然在大部分情况下是我们所不希望的。对此ActiveMQ提供了两种持久化方式以供选择。 kahaDB是一个基于文件,支持事务的、可靠,高性能,可扩展的消息存储器,目前是a

    2024年02月04日
    浏览(21)
  • 二、ActiveMQ安装

    环境:Centos7.9 安装ActiveMQ版本:5.15.9 JDK8 安装教程:https://qingsi.blog.csdn.net/article/details/136129131 ActiveMQ版本:5.15.9 任意版本下载地址 5.15.9版本下载地址 如果有防火墙,需要开通端口 http://127.0.0.1:8161/admin 默认的用户名和密码是admin/admin

    2024年02月19日
    浏览(24)
  • 如何使用ActiveMQ

    ActiveMQ是Apache的一款开源消息总线,主要用来做消息的分发。使用ActiveMQ,通常需要以下步骤: 一、启动ActiveMQ 首先需要下载ActiveMQ,然后进行启动。启动后,可以在控制台创建队列,初始用户名和密码通常为admin/admin。 二、编写生产者代码 创建一个ConnectionFactory对象,需要指

    2024年01月17日
    浏览(25)
  • ActiveMQ面试题(一)

    什么是ActiveMQ ActiveMQ 服务器宕机怎么办? 丢消息怎么办 持节化消息非常慢 消息的不均匀消费 activeMQ 是一种开源的,实现了 JMS1.1 规范的,面向消息(MOM)的中间件,为应用程序提供高效的、可扩展的、稳定的和安全的企业级消息通信 这得从 ActiveMQ 的储存机制说起。 在通常的

    2024年02月07日
    浏览(29)
  • ActiveMQ用法

    ActiveMQ是流行的开源消息中间件,JMS是Java平台定义的一种消息传递的标准。ActiveMQ实现了JMS规范,因此可以使用JMS API来与ActiveMQ进行交互。 JMS定义了一种标准的API。API包括了一些接口和类,用于创建、发送、接收和处理消息。ActiveMQ实现了这些接口和类,并提供了一些额外的

    2024年02月08日
    浏览(29)
  • 如何使用ActiveMQ详细讲解

    ActiveMQ 是一款流行的消息中间件,支持多种通信协议和消息模式,包括点对点、发布/订阅、事务处理等。下面是使用 ActiveMQ 的基本步骤: 1. 下载和安装 ActiveMQ: 2. 启动 ActiveMQ 服务器: 3. 访问 ActiveMQ 的 Web 控制台: 4. 创建队列或主题: 5. 发送消息: 6. 接收消息: 以上是使

    2024年01月17日
    浏览(32)
  • Zabbix监控ActiveMQ

    当我们在线上使用了 ActiveMQ 后,我们需要对一些参数进行监控,比如 消息是否有阻塞,哪个消息队列阻塞了,总的消息数是多少等等。下面我们就通过 Zabbix 结合 Python 脚本来实现对 ActiveMQ 的监控。 一、创建 Activemq Python 监控脚本 因为 CentOS 系统默认安装的是 Python2.7 ,为了

    2024年02月14日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包