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
在这里插入图片描述

  • 先备份
    [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协议有哪些?

在这里插入图片描述

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
    在这里插入图片描述

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>

小总结

在这里插入图片描述

NIO 协议案例

  • NIO配置

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

  • ./activemq stop 停止mq运行

  • 修改配置文件
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

  • NIO测试

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

生产者

在这里插入图片描述在这里插入图片描述
消费者

在这里插入图片描述
在这里插入图片描述

  • 测试添加nio协议

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

生产者
在这里插入图片描述
在这里插入图片描述
消费者
在这里插入图片描述
在这里插入图片描述

NIO 案例演示增强

  • 上述NIO性能不错了,如何进一步优化?
BIO+TCP
NIO+TCP
NIO+TCP/MQTT/STOMP
  • 问题

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

  • 解决

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

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

在这里插入图片描述

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

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

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

相关文章

基于单片机的超声波测距仪

收藏和点赞&#xff0c;您的关注是我创作的动力 文章目录 概要 一、本课题研究的主要内容二、超声波测距仪的整体方案2.2 超声波测距仪设计原理 三、超声波测距仪系统硬件电路的设计3.1 超声波测距仪的基本结构 四、 超声波测距仪系统的软件设计4.1 主程序软件设计仿真 五、结…

[极客大挑战 2019]Upload 1

题目环境&#xff1a; 根据题目和环境可知此题目是一道文件上传漏洞 编写一句话木马脚本<?php eval($_POST[shell]);?>将脚本文件更改为jpg图片文件我这里是flag.jpg上传文件并burpsuite抓包Repeater重放 报错一句话木马里面有<?字符 换一种一句话木马继续编写木马…

如何在搜索引擎中应用AI大语言模型,提高企业生产力?

人工智能尤其是大型语言模型的应用&#xff0c;重塑了我们与信息交互的方式&#xff0c;也为企业带来了重大的变革。将基于大模型的检索增强生成&#xff08;RAG&#xff09;集成到业务实践中&#xff0c;不仅是一种趋势&#xff0c;更是一种必要。它有助于实现数据驱动型决策&…

正点原子嵌入式linux驱动开发——Linux WIFI驱动

WIFI的使用已经很常见了&#xff0c;手机、平板、汽车等等&#xff0c;虽然可以使用有线网络&#xff0c;但是有时候很多设备存在布线困难的情况&#xff0c;此时WIFI就是一个不错的选择。正点原子STM32MP1开发板支持USB和SDIO这两种接口的WIFI&#xff0c;本章就来学习一下如何…

Linux防火墙入门:学会使用firewalld和iptables

1 防火墙 1.1 防火墙介绍 防火墙就是过滤的表格&#xff0c;被记录在表格中的信息&#xff0c;才允许通过访问。 1.2 两种火墙策略 iptables dnf install iptables-services -y systemctl disable --now firewalld systemctl mask firewalld systemctl enable --now ip…

设置区块链节点输出等级为警告级,并把日志存储阈值位100MB并验证;

题目 获取指定区块链节点输出等级为警告级&#xff0c;并设置日志存储阈值位100MB并验证&#xff1b; 操作步骤 1.切换目录 cd nodes/127.0.0.1/node0 2.打开配置文件并修改 vim config.ini warn&#xff1a;警告

工业路由器网关的网络协议之NAT技术

在物联网通讯领域&#xff0c;NAT技术能将内网的一个私有IP转换成一个公网IP去接入互联网&#xff0c;解决组建局域网络时私有IP地址无法在公网上进行路由的问题。 NAT&#xff08;Network Address Translation&#xff09;的三种方式&#xff1a; 静态NAT 1、一个私有IP对应…

人大金仓三大兼容:SQL Server迁移无忧

SQL Server在数据库领域一直占据着重要地位。作为一款成熟稳定的关系型数据库管理系统&#xff0c;SQL Server在国内有着广泛的用户群体&#xff0c;医疗、海关、政务等行业的核心业务系统多采用SQL Server数据库。随着政策与市场的双重驱动&#xff0c;信息技术应用创新产业的…

Rust编程基础核心之所有权(上)

1.什么是所有权? Rust 的核心功能&#xff08;之一&#xff09;是 所有权&#xff08;ownership&#xff09;。虽然该功能很容易解释&#xff0c;但它对语言的其他部分有着深刻的影响。 所有程序都必须管理其运行时使用计算机内存的方式。一些语言中具有垃圾回收机制&#x…

Android项目升级到AndroidX

1、 2、 然后报错了&#xff1a; The gradle plugin version in your project build.gradle file needs to be set to at least com.android.tools.build:gradle:3.2.0 in order to migrate to AndroidX. 修改gradle版本 31报错了就用30.0.0了 3、 提示备份、然后执行do re…

matlab中的iddata函数的初步理解和使用程序举例

matlab中的iddata函数的初步理解和程序举例 一、iddata函数功能 iddata函数常用于系统识别分析领域数据分析方面。该函数在时域或频域中&#xff0c;将用于系统识别的输入输出数据及其特性数据的生成对象数据类型。即&#xff0c;可以使用iddata函数封装要标识的系统的输入和…

【题解】2023 DTS算法竞赛集训 第1次

比赛地址&#xff1a;https://www.luogu.com.cn/contest/143650 P1319 压缩技术 https://www.luogu.com.cn/problem/P1319 简单的签到模拟题 #include <iostream>//c标准库 using namespace std; int main(){int a,n,t0,i0,b,s0;//t判断有没有回车&#xff0c;i判断输…