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 同样可以支持,协议的适配性获得极大提升)
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

04【保姆级】-GO语言指针

之前我学过C、Java、Python语言时总结的经验&#xff1a; 先建立整体框架&#xff0c;然后再去抠细节。先Know how&#xff0c;然后know why。先做出来&#xff0c;然后再去一点点研究&#xff0c;才会事半功倍。适当的囫囵吞枣。因为死抠某个知识点很浪费时间的。对于GO语言&a…

二蛋赠书七期:《云原生数据中台:架构、方法论与实践》

前言 大家好&#xff01;我是二蛋&#xff0c;一个热爱技术、乐于分享的工程师。在过去的几年里&#xff0c;我一直通过各种渠道与大家分享技术知识和经验。我深知&#xff0c;每一位技术人员都对自己的技能提升和职业发展有着热切的期待。因此&#xff0c;我非常感激大家一直…

基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(简单支持发起人与审批人的流程)续

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 之前生产的xml&#xff0c;在bpmn设计里编辑有些内容不正确&#xff0c;包括审批人&#xff0c;关联表单等…

【蓝桥杯选拔赛真题13】C++最短距离 青少年组蓝桥杯C++选拔赛真题 STEMA比赛真题解析

C/C++最短距离 第十二届青少组蓝桥杯C++选拔赛真题 一、题目要求 1、编程实现 有一个居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为 1,2,3……,当排满一行时,从下一行相邻的楼往反方向排号。 例如:小区为 3 行 6 列,矩阵排列方式: 要求:已知小区…

vue:如何实现通过判断数组中每个对象的其中一个属性,从而更改另一个属性的值

1、假设一个box为一个包含多个对象的数组&#xff0c;这个box数组可以在方法中定义也可以在data域中定义 let box [{ id: 1, status: 审批中 },{ id: 2, status: 已通过 },{ id: 3, status: 未通过 } ];2、在methods域中写一个方法遍历这个box数组判断每个对象中的status属性是…

Linux 服务器监控

服务器几乎与任何 IT 基础设施密不可分&#xff0c;Linux 是服务器兼容性最强的开源操作系统&#xff0c;因为它具有灵活性、一致性和安全性。大多数 Linux 服务器都设置了以下 Linux 操作系统的任何变体&#xff1a;Red Hat Enterprise Linux &#xff08;RHEL&#xff09;、D…

clickhouse安装与远程访问

安装&#xff08;本文以ubuntu系统为例&#xff09; 单节点设置​ 为了延迟演示分布式环境的复杂性&#xff0c;我们将首先在单个服务器或虚拟机上部署ClickHouse。ClickHouse通常是从deb或rpm包安装&#xff0c;但对于不支持它们的操作系统也有其他方法。 例如&#xff0c;…

Markdown写作应用推荐

MWeb Pro 是一款适用于macOS的专业Markdown写作、笔记本应用软件。喜欢写博客的朋友&#xff0c;那你一定会需要 MWeb Pro 这款软件。为您提供最佳的写作体验。 Markdown 语法支持&#xff1a; 使用 Github Flavored Markdown 语法&#xff0c;简称 GFM 语法。支持表格、TOC、…

吴恩达《机器学习》6-4->6-7:代价函数、简化代价函数与梯度下降、高级优化、多元分类:一对多

一、代价函数 逻辑回归的代价函数是用来度量模型预测与实际结果之间的差异的。与线性回归使用均方误差不同&#xff0c;逻辑回归使用的代价函数在数学上更为复杂。为了理解逻辑回归的代价函数&#xff0c;首先要明白逻辑回归的假设函数&#xff1a; ℎ&#x1d703;(&#x1…

消息代理与事件代理:何时使用它们

选择正确的工具来满足异步处理需求的技术指南 作为后端开发人员&#xff0c;有一天你需要回答这个问题&#xff1a; 我需要构建一个使用分布式队列的异步应用程序&#xff0c;我应该使用哪个代理&#xff1f; 作为工程师&#xff0c;我们的本能是列出我们了解或希望熟悉的工具&…

汇编-变量

.386 .model flat,stdcall option casemap:none.data sum DWORD 0 ;创建一个全局变量&#xff0c;取名sum,初始化0 sum1 DWORD ? ;创建一个全局变量sum1,无初始化 ;问号(?)初始化值使得变量未被初始化&#xff0c;这意味着在运行时才会为该变量分配一个值 ;变量名…

【Git】Git 学习笔记_操作远程仓库

1. SSH 配置和克隆仓库 ssh-keygen -t rsa -C "xxxqq.com"回车后出现以下内容&#xff0c;直接回车&#xff1a; Generating public/private rsa key pair. Enter file in which to save the key (/Users/your_user_directory/.ssh/id_rsa): (按回车键) Enter pass…

指针进阶(3)

文章目录 9. 指针和数组笔试题解析10. 指针笔试题 9. 指针和数组笔试题解析 在做题之前&#xff0c;我们再次明确一下数组名的理解&#xff1a; 数组名是数组首元素的地址&#xff0c;但是有2个例外&#xff1a; sizeof(数组名)&#xff0c;这里的数组名表示整个数组&#xff…

[黑马程序员Pandas教程]——Pandas数据结构

目录&#xff1a; 学习目标认识Pandas中的数据结构和数据类型Series对象通过numpy.ndarray数组来创建通过list列表来创建使用字典或元组创建s对象在notebook中不写printSeries对象常用API布尔值列表获取Series对象中部分数据Series对象的运算DataFrame对象创建df对象DataFrame…

pytorch之relu激活函数

目录 1、relu 2、relu6 3、leaky_relu 4、ELU 5、SELU 6、PReLU 1、relu ReLU&#xff08;Rectified Linear Unit&#xff09;是一种常用的神经网络激活函数&#xff0c;它在PyTorch中被广泛使用。ReLU函数接受一个输入值&#xff0c;如果该值大于零&#xff0c;则返回该…

python的format函数的用法及实例

目录 1.format函数的语法及用法 &#xff08;1&#xff09;语法&#xff1a;{}.format() &#xff08;2&#xff09;用法&#xff1a;用于格式化字符串。可以接受无限个参数&#xff0c;可以指定顺序。返回结果为字符串。 2.实例 &#xff08;1&#xff09;不设置位置&…

浮点数存储

//浮点数存储 int main() {int n 9;//00000000 00000000 00000000 00001001//0 00000000 00000000000000000001001//S E(8bit) M(23bit)//E-126//M0.000000000000000000001001// 0.000000000000000000001001 *2^-126float* pFloat (float*)&n;printf("n的值…

挖掘非结构化数据潜能——向量数据库的探索之路

“ 摸着石头过河&#xff0c;一直向前&#xff0c;不断尝试 ” 整理 | 小白 出品&#xff5c;极新 IDC 预测&#xff0c;到 2025 年&#xff0c;中国的数据量将增长到 48.6ZB&#xff0c;80% 是非结构化数据&#xff0c;并且将成为全球最大的数据圈。在我们的日常生活中&…

python使用pysqlcipher3对sqlite数据库进行加密

python对很多项目都需要对sqlite数据库的数据进行加密&#xff0c;最流行的加密方式是使用pysqlcipher3&#xff0c;当前使用的python版本为3.7&#xff0c;本博文是直接使用pysqlcipher3在项目上的应用&#xff0c;使用的是已编译好的pysqlcipher3包&#xff0c;如果你需要pys…

Jmeter_逻辑控制器

逻辑控制器 控制取样器执行顺序的组件实现(分支 循环) 分类 1、如果(if) 控制器 分支实现 2、forEach控制器 循环往复实现 3、循环控制器 循环往复实现 如果(if) 控制器 需求1:测试计划中定义一个 http 请求访问百度&#xff0c;但是该请求不是无条件执行的&#xff0c;…