ActiveMQ的传输协议
目录
一、面试题
二、官网
三、简介
四、详解
五、NIO协议案例
六、NIO协议案例增强
一、面试题
1.默认的61616端口如何修改
与conf/activemq.xml中的配置文件的传输协议有关,可以通过修改配置文件该端口号
2.生产上的链接协议如何配置的?使用tcp吗?
隐含意思:是否使用过其他的传输协议:nio,amqp,stomp...
tcp只是入门级别的,nio比tcp性能更高
二、官网
上网站查看传输协议:http://activemq.apache.org/configuring-version-5-transports.html
三、简介
ActiveMQ支持的client-broker通讯协议有:TVP、NIO、UDP、SSL、Http(s)、VM。
其中配置Transport Connector的文件在ActiveMQ安装目录的conf/activemq.xml中的<transportConnectors>标签之内。
在上文给出的配置信息中,URI描述信息的头部都是采用协议名称:例如
描述amqp协议的监听端口时,采用的URI描述格式为“amqp://······”;
描述Stomp协议的监听端口时,采用URI描述格式为“stomp://······”;
唯独在进行openwire协议描述时,URI头却采用的“tcp://······”。这是因为ActiveMQ中默认的消息协议就是openwire
四、详解
除了tcp和nio协议,其他的了解就行。各种协议有各自擅长该协议的中间件,工作中一般不会使用activemq去实现这些协议。如: mqtt是物联网专用协议,采用的中间件一般是mosquito。ws是websocket的协议,是和前端对接常用的,一般在java代码中内嵌一个基站(中间件)。stomp好像是邮箱使用的协议的,各大邮箱公司都有基站(中间件)。
注意:协议不同,我们的代码都会不同。
(一)TCP协议
- Transmission Control Protocol(TCP)是默认的。TCP的Client监听端口61616
- 在网络传输数据前,必须要先序列化数据,消息是通过一个叫wire protocol的来序列化成字节流。
- TCP连接的URI形式如:tcp://HostName:port?key=value&key=value,后面的参数是可选的。
- TCP传输的的优点:
TCP协议传输可靠性高,稳定性强
- 高效率:字节流方式传递,效率很高
- 有效性、可用性:应用广泛,支持任何平台
关于Transport协议的可选配置参数可以参考官网http://activemq.apache.org/tcp-transport-reference
(二)NIO协议
- New I/O API Protocol(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
(三)MAQP协议
(四)STMOP协议
(四)MQTT协议
五、NIO协议案例
ActiveMQ这些协议传输的底层默认都是使用BIO网络的IO模型。只有当我们指定使用nio才使用NIO的IO模型。
(一)修改activemq.xml并重启activemq
加上nio的transactionConnector
查看管理后台,可以看到页面多了nio
(二)生产者消费者代码修改
public static final String ACTIVEMQ_URL = "nio://193.179.123.10:61618"; public static final String QUEUE_NAME = "transport";
六、NIO协议案例增强
(一)问题
上面是Openwire协议传输底层使用NIO网络IO模型。 如何让其他协议传输底层也使用NIO网络IO模型,达到下图的第三个层次呢?
(二)解决
auto : 针对所有的协议,他会识别我们是什么协议。
nio :使用NIO网络IO模型
1.修改activemq.xml文件并重新启动服务
添加以下语句
<transportConnector name="auto+nio" uri="auto+nio://0.0.0.0:61608?maximumConnections=1000&wireFormat.maxFrameSize=104857600&org.apache.activemq.transport.nio.SelectorManager.corePoolSize=20&org.apache.activemq.transport.nio.Se1ectorManager.maximumPoo1Size=50"/>
2.查看前台可以发现多出了一个auto+nio
3.生产者消费者代码修改
public static final String ACTIVEMQ_URL = "nio://193.179.123.10:61608";
public static final String QUEUE_NAME = "nio_auto";
ActiveMQ的传输协议相关推荐
- JMS规范、ActiveMQ Broker和ActiveMQ传输协议
Java实现ActiveMQ通讯(构建过程) 编写pom.xml配置文件 <!-- https://mvnrepository.com/artifact/org.apache.activemq/ ...
- 消息中间件ActiveMQ 4: 传输协议
文章目录 ActiveMQ的传输协议 1. Transmiss Control Protocol(TCP)默认 2.New I/O API Protocol (更好的性能) 3.由于主要是Java开发 ...
- JMS学习十 ActiveMQ支持的传输协议
JMS学习(ActiveMQ支持的传输协议) ActiveMQ提供了一种连接机制,这种连接机制使用传输连接器(TransportConnector)实现客户端与代理(client - to - bro ...
- 实时传输协议(RTP)
RTP简介 RTP是一种提供端对端传输服务的实时传输协议,用来支持在单目标广播和多目标广播网络服务中传输实时数据,而实时数据的传输则由RTCP协议来监视和控制. RTP定义在RFC 使用RTP协议的应 ...
- 简单文件传输协议TFTP分析还原
" 介绍TFTP协议及传输内容的还原." TFTP,全称为Trivial File Transfer Protocol,即简单文件传输协议,是一个用来在客户端与服务器之间进行简单文 ...
- JavaMail学习笔记(一)、理解邮件传输协议(SMTP、POP3、IMAP、MIME)
电子邮件需要在邮件客户端和邮件服务器之间,以及两个邮件服务器之间进行传递,就必须遵循一定的规则,这些规则就是邮件传输协议.SMTP协议定了邮件客户端与SMTP服务之间,以及两台SMTP服务器之间发送邮 ...
- 知名文件传输协议 SCP 被曝存在 35 年历史的安全漏洞
基于 SSH 的文件传输协议 SCP(Secure Copy Protocol)被曝存在安全漏洞. 安全研究人员公布了 SCP 存在的多个漏洞,这些漏洞可以结合起来利用,分别为 CVE-2018-20 ...
- [转]文件传输协议(FTP)操作(上传,下载,新建,删除,FTP间传送文件等)实现汇总1
转自:http://blog.csdn.net/soarheaven/archive/2008/12/08/3474152.aspx 最近项目需要对FTP服务器进行操作,现把实现总结如下: 打算分2篇 ...
- FTP 服务搭建及常用的命令脚本及传输协议基础普及
1.首先我们日常的日常工作会常遇到各种各样的传输问题,比如需要将更新的补丁上传到服务器,或者从服务器上下载一些资料,但是经常用到的协议就大致的归纳一下(资料来自百度百科): 首先是FTP ftp的语义 ...
最新文章
- 最新 react 开发框架(webpack2、react15、react-router4、antd-mobile)
- word 通配符_word通配符技巧:HR高效办公技巧应用
- php三个数字比较大小排序,php中常用的4种实现数字大小排序的冒泡选择等算法函数代码...
- 为什么说 Java 是按值传递的?
- 【APICloud系列|12】ios真机调试时如何添加新设备的udid?
- php umount强制,linux中mount/umount命令的基本用法及开机自动挂载方法
- 博世成立新部门布局互联交通服务
- (数学)最小二乘的几何意义及投影矩阵
- HDU-简易版之最短距离(最短路)
- 推荐系统系列教程之十四:经典模型融合方法----线性模型和树模型的组合拳
- 轻量化神经网络篇(SqueezeNet、Xception、MobileNet、ShuffleNet)
- OAuth 及 移动端鉴权调研
- 深度学习 --- 玻尔兹曼分布详解
- 搭建SSM全流程框架过程
- 便宜php扩展,php扩展【货币问答】- php扩展所有答案 - 联合货币
- cad没有命令输入框_cad中怎么输入文字?cad怎么输入文字?
- python 对象是什么概念
- IE下判断IE版本的语句...[if lte IE 8]……[endif]
- 弹出界面 eth1: 设备 eth1 似乎不存在, 初始化操作将被延迟。
- 物价上涨 下馆子点菜的省钱办法