ActiveMQ支持的传输协议

 连接到ActiveMQ

 Connector:ActiveMQ提供的,用来实现连接通信的功能。包括:client-to-broker、broker-to-broker。ActiveMQ允许客户端使用多种协议来进行连接。

    client-to-broker模式一般是配置文件中的transportConnector配置

    broker-to-broker:一般是指网络(network)===后面学习 

 

ActiveMQ支持的client-to-broker的通信协议如下:最常用的也就是TCP和NIO

1.TCP:这个也是缺省值

2.NIO

3.UDP

4.SSL

5.Http(s)

6.VM:如果客户端和broker在一个虚拟机内的话,通过VM协议通讯在VM内通讯,从而减少网络传输的开销

配置transportConnectors,位于conf/activemq.xml,大致如下:

        <!--The transport connectors expose ActiveMQ over a given protocol toclients and other brokers. For more information, see:http://activemq.apache.org/configuring-transports.html--><transportConnectors><!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB --><transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/><transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/><transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/><transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/><transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/></transportConnectors>

文件的注释也注明了更详细协议以及参数的配置参考:http://activemq.apache.org/configuring-transports.html

1.Transmission Control Protocol (TCP)---常用

1.这是默认的Broker配置,TCP的Client监听端口是61616。

2.在网络传输数据前,必须要序列化数据,消息是通过一个叫wire protocol的来序列化成字节流。默认情况下,ActiveMQ把wire protocol叫做OpenWire,它的目的是促使网络上的效率和数据快速交互。 

3.TCP连接的URI形式:tcp://hostname:port?key=value&key=value。其中前面部分是必须的,参数是可选的
4.TCP传输的优点:

  TCP协议传输可靠性高,稳定性强。
  高效性:字节流方式传递,效率很高。
  有效性、可用性:应用广泛,支持任何平台。

2.New I/O API Protocol (NIO)---常用

1.NIO协议和TCP协议类似,但NIO更侧重于底层的访问操作。它允许开发人员对同一资源可有更多的client调用和服务端有更多的负载。

2.适合使用NIO协议的场景:
  可能有大量的Client去链接到Broker上可能对于Broker有一个很迟钝的网络传输NIO的实现比TCP需要更少的线程去运行,所以建议使用NIO协议。

  可能对于Broker有一个很迟钝的网络传输。


我们在上面的配置文件中增加nio的连接:

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

程序中修改对应的url即可,如下:

private static final String url = "nio://0.0.0.0:61618/";

 

3.User Datagram Protocol (UDP)

1.UDP和TCP的区别:

  (1)TCP是一个原始流的传递协议,意味着数据包是有保证的,换句话说,数据包是不会被复制和丢失的。UDP是不会保证数据包的传递的。

  (2)TCP也是一个稳定可靠的数据包传递协议,意味着数据在传递的过程中不会被丢失。这样确保了在发送和接收之间能够可靠的传递。相反,UDP仅仅是一个链接协议,所以它没有可靠性之说。

2. 从上面可以得出:TCP是被用在稳定可靠的场景中使用的;UDP通常用在快速数据传递和不怕数据丢失的场景中,还有ActiveMQ通过防火墙时,只能用UDP。
3. UDP连接的URI形式:udp://hostname:port?key=value

 

4. Secure Sockets Layer Protocol (SSL) 安全链路保护

  连接的URI形式:ssl://hostname:port?key=value

 

5.Hypertext Transfer Protocol (HTTP/HTTPS)

  1.像web和email等服务需要通过防火墙来访问的,Http可以使用这种场合。
  2.连接的URI形式:http(https)://hostname:port?key=value

 

6.VM Protocol (VM)

1.  VM transport允许在VM内部通信,从而避免了网络传输的开销。这时候采用的连接不是socket连接,而是直接的方法调用。
2.  第一个创建VM连接的客户会启动一个embed VM broker(内嵌虚拟机服务),接下来所有使用相同的broker name的VM连接都会使用这个broker。当这个broker上所有的连接都关闭的时候,这个broker也会自动关闭。

3. 连接的URI形式:vm://brokerName?key=value
4. Java中嵌入的方式 vm:broker:(tcp://localhost:61616)?brokerName=embddedbroker&persistent=false

 

转载于:https://www.cnblogs.com/qlqwjy/p/10463661.html

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

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

相关文章

http状态码301和302详解及区别

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一直对http状态码301和302的理解比较模糊&#xff0c;在遇到实际的问题和翻阅各种资料了解后&#xff0c;算是有了一定的理解。这里记录下…

哪些编程语言需要修复?

摘要&#xff1a;编程语言有十全十美的吗&#xff1f;每种语言都有缺陷吗&#xff1f;这不&#xff0c;Java、C、C、Python都中枪了。语言之间也可相互“掐架”&#xff0c;一起来看下。 原文作者Kevin Kelleher采用一种比较新颖的方式来比较编程语言&#xff1a;即描述每个编程…

时间修改,学习

设定时间格式 import datetime print datetime.datetime.now().strftime("%Y-%m-%d %H:%M") # 2018-05-08 16:54 时间增加 import datetime print (datetime.datetime.now()datetime.timedelta(days1)).strftime("%Y-%m-%d %H:%M:%S") days改为hours m…

Python标准库

《Python标准库》基本信息原书名&#xff1a; The Python Standard Library by Example 原出版社&#xff1a; Pearson Education 作者&#xff1a; (美)Doug Hellmann 译者&#xff1a; 刘炽 出版社&#xff1a;机械工业出版社 ISBN&#xff1a;9787111378105上架时间&#xf…

五种世界顶级思维-20190303

一、墨菲定律&#xff1a; 你越害怕什么&#xff0c;就越会发生什么。 二、吉尔伯特定律&#xff1a;工作中最大的困难就是没人跟你说如何去做。 三、吉德林法则&#xff1a;把问题清楚的写下来&#xff0c;就已经成功一半了。 四、沃尔森法则&#xff1a;把信息和金钱排在第一…

状态码301和302的区别

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 定义如下&#xff1a; 301 Moved Permanently 被请求的资源已永久移动到新位置&#xff0c;并且将来任何对此资源的引用都应该使用本响应…

Perl迎来25岁生日

摘要&#xff1a;Perl迎来了它的第25岁生日&#xff0c;普天下Perlist都冒泡同庆一下&#xff0c;很多开发者喜欢它的理由是因其具备强力、稳定、成熟、可移植性等特点&#xff0c;Perl的爱好者们赶快送上你的祝福吧&#xff01; 昨天&#xff0c;Perl迎来了它的第25岁生日&…

20165114 《网络对抗技术》 Exp0 Kali安装与配置 Week1

目录&#xff1a; 一、kail的下载与安装 二、kali的网络设置 三、安装vmware-tools。 四、更新软件源。 五、共享文件夹 六、安装中文输入法 一、kail的下载与安装 VMware workstation的安装 因为之前的课程已经涉及&#xff0c;所以本机已经安装好了VMware workstation&#x…

大数据:互联网大规模数据挖掘与分布式处理

《大数据:互联网大规模数据挖掘与分布式处理》基本信息原书名&#xff1a;Mining of Massive Datasets作者&#xff1a; (美)拉贾拉曼(Rajaraman,A.) (美)厄尔曼(Ullman,J.D.) [作译者介绍]译者&#xff1a; 王斌丛书名&#xff1a; 图灵程序设计丛书出版社&#xff1a;人民邮电…

pip 切换源安装

https://pypi.tuna.tsinghua.edu.cn/simple/ # 清华大学 https://mirrors.aliyun.com/pypi/simple/ # 阿里云 https://pypi.douban.com/simple/ # 豆瓣 https://pypi.mirrors.ustc.edu.cn/simple/ # 中国科学技术大学 https://pypi.hustunique.com/ # 华中科技大学 代码…

String... 参数定义中有三个点的意思

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 有一个方法&#xff1a; protected void addMessage(String... messages) { ... } String... 是指参数的长度是可以变化的&#xff0…

SpringCloud框架搭建+实际例子+讲解+系列五

&#xff08;4&#xff09;服务消费者&#xff0c;面向前端或者用户的服务 本模块涉及到很多知识点&#xff1a;比如Swagger的应用&#xff0c;SpringCloud断路器的使用&#xff0c;服务API的检查、token的校验&#xff0c;feign消费者的使用。大致代码框架如下&#xff1a; 先…

软件开发者最重要的四大技能

摘要&#xff1a;现如今&#xff0c;可供选择的技术、语言及平台可谓五花八门&#xff0c;因此要弄明白哪里是花时间训练的最佳投资点也就难上加难…… 现如今&#xff0c;可供选择的技术、语言及平台可谓五花八门&#xff0c;因此作为软件开发者&#xff0c;要弄明白哪里是花时…

数据缺失的补充与修改

1查看数据情况 df.shape df.info() 2.用指定值填充 df df.fillna(x) 3.判断是否缺失 df.isnull() 4.删除缺失数据 df df.dropna() 5.补充平均值 df df.fillna(df.mean()) 6.填充他前面一个元素值(ffill向前填充&#xff0c;bfill向后填充)&#xff08;limit:可以…

其他-私人♂收藏(比赛记录 Mar, 2019)

OwO 03.03 [USACO19JAN] A. Redistricting 题意&#xff1a;给 \(g\) &#xff0c;求 \(f(n)\) 。 \(f(i)f(j)[g(i)\ge g(j)],j \in (i-k,i]\) 。 离散化之后线段树优化 DP &#xff1b;或者发现额外贡献最多只有 \(1\) &#xff0c;单调队列。 B. Exercise Route 题意&#xf…

JSR 303 - Bean Validation 简介及使用方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一、JSR-303简介 JSR-303 是 JAVA EE 6 中的一项子规范&#xff0c;叫做 Bean Validation&#xff0c;官方参考实现是Hibernate Valida…

POJ 3683 Priest John's Busiest Day(2-ST)

题目链接&#xff1a;http://poj.org/problem?id3683 题意&#xff1a;有n个婚礼要举行&#xff0c;但是只有一个牧师。第i个婚礼使用牧师的时间长为leni&#xff0c;可以在开始时或结束时使用。问能否使得n个婚礼均举行&#xff1f; 思路:对于婚礼i&#xff0c;i*2-1表示在开…

12个git实战建议和技巧

摘要&#xff1a;git无疑是现在最热门的版本控制工具&#xff0c;而且正在进一步侵占SVN以及CVS的市场。本文作者从国外技术问答社区Stack Overflow整理的12个很实用的git使用技巧和建议&#xff0c;希望对你有帮助。 1.使用“git diff”来折叠多行 用git diff经常会出现很多内…

python读写json和txt

读写json #数据保存如json文件 import json jsObj json.dumps(code_sec) fileObject open(jsonFile.json, w) fileObject.write(jsObj) fileObject.close() #读取json文件 # 将类文件对象中的JSON字符串直接转换成 Python 字典 with open(jsonFile.json, r, encoding…

Java 12 将于3月19日发布,8 个最终 JEP 一览

开发四年只会写业务代码&#xff0c;分布式高并发都不会还做程序员&#xff1f; JDK 12 已于2018年12月进入 Rampdown Phase One 阶段&#xff0c;这意味着该版本所有新的功能特性被冻结&#xff0c;不会再加入更多的 JEP 。该阶段将持续一个月&#xff0c;主要修复 P1-P3 级…