目录

一、面试题

二、官网

三、简介

四、详解

五、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协议

  1. Transmission Control Protocol(TCP)是默认的。TCP的Client监听端口61616
  2. 在网络传输数据前,必须要先序列化数据,消息是通过一个叫wire protocol的来序列化成字节流。
  3. TCP连接的URI形式如:tcp://HostName:port?key=value&key=value,后面的参数是可选的。
  4. TCP传输的的优点:

TCP协议传输可靠性高,稳定性强

  • 高效率:字节流方式传递,效率很高

    • 有效性、可用性:应用广泛,支持任何平台

关于Transport协议的可选配置参数可以参考官网http://activemq.apache.org/tcp-transport-reference

(二)NIO协议

  1. New I/O API Protocol(NIO)
  2. NIO协议和TCP协议类似,但NIO更侧重于底层的访问操作。它允许开发人员对同一资源可有更多的client调用和服务器端有更多的负载。
  3. 适合使用NIO协议的场景:

可能有大量的Client去连接到Broker上,一般情况下,大量的Client去连接Broker是被操作系统的线程所限制的。因此,NIO的实现比TCP需要更少的线程去运行,所以建议使用NIO协议。

可能对于Broker有一个很迟钝的网络传输,NIO比TCP提供更好的性能。

  1. NIO连接的URI形式:nio://hostname:port?key=value&key=value
  2. 关于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&amp;wireFormat.maxFrameSize=104857600&amp;org.apache.activemq.transport.nio.SelectorManager.corePoolSize=20&amp;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的传输协议相关推荐

  1. JMS规范、ActiveMQ Broker和ActiveMQ传输协议

    Java实现ActiveMQ通讯(构建过程) 编写pom.xml配置文件 <!-- https://mvnrepository.com/artifact/org.apache.activemq/ ...

  2. 消息中间件ActiveMQ 4: 传输协议

    文章目录 ActiveMQ的传输协议 1. Transmiss Control Protocol(TCP)默认 2.New I/O API Protocol (更好的性能) 3.由于主要是Java开发 ...

  3. JMS学习十 ActiveMQ支持的传输协议

    JMS学习(ActiveMQ支持的传输协议) ActiveMQ提供了一种连接机制,这种连接机制使用传输连接器(TransportConnector)实现客户端与代理(client - to - bro ...

  4. 实时传输协议(RTP)

    RTP简介 RTP是一种提供端对端传输服务的实时传输协议,用来支持在单目标广播和多目标广播网络服务中传输实时数据,而实时数据的传输则由RTCP协议来监视和控制. RTP定义在RFC 使用RTP协议的应 ...

  5. 简单文件传输协议TFTP分析还原

    " 介绍TFTP协议及传输内容的还原." TFTP,全称为Trivial File Transfer Protocol,即简单文件传输协议,是一个用来在客户端与服务器之间进行简单文 ...

  6. JavaMail学习笔记(一)、理解邮件传输协议(SMTP、POP3、IMAP、MIME)

    电子邮件需要在邮件客户端和邮件服务器之间,以及两个邮件服务器之间进行传递,就必须遵循一定的规则,这些规则就是邮件传输协议.SMTP协议定了邮件客户端与SMTP服务之间,以及两台SMTP服务器之间发送邮 ...

  7. 知名文件传输协议 SCP 被曝存在 35 年历史的安全漏洞

    基于 SSH 的文件传输协议 SCP(Secure Copy Protocol)被曝存在安全漏洞. 安全研究人员公布了 SCP 存在的多个漏洞,这些漏洞可以结合起来利用,分别为 CVE-2018-20 ...

  8. [转]文件传输协议(FTP)操作(上传,下载,新建,删除,FTP间传送文件等)实现汇总1

    转自:http://blog.csdn.net/soarheaven/archive/2008/12/08/3474152.aspx 最近项目需要对FTP服务器进行操作,现把实现总结如下: 打算分2篇 ...

  9. FTP 服务搭建及常用的命令脚本及传输协议基础普及

    1.首先我们日常的日常工作会常遇到各种各样的传输问题,比如需要将更新的补丁上传到服务器,或者从服务器上下载一些资料,但是经常用到的协议就大致的归纳一下(资料来自百度百科): 首先是FTP ftp的语义 ...

最新文章

  1. 最新 react 开发框架(webpack2、react15、react-router4、antd-mobile)
  2. word 通配符_word通配符技巧:HR高效办公技巧应用
  3. php三个数字比较大小排序,php中常用的4种实现数字大小排序的冒泡选择等算法函数代码...
  4. 为什么说 Java 是按值传递的?
  5. 【APICloud系列|12】ios真机调试时如何添加新设备的udid?
  6. php umount强制,linux中mount/umount命令的基本用法及开机自动挂载方法
  7. 博世成立新部门布局互联交通服务
  8. (数学)最小二乘的几何意义及投影矩阵
  9. HDU-简易版之最短距离(最短路)
  10. 推荐系统系列教程之十四:经典模型融合方法----线性模型和树模型的组合拳
  11. 轻量化神经网络篇(SqueezeNet、Xception、MobileNet、ShuffleNet)
  12. OAuth 及 移动端鉴权调研
  13. 深度学习 --- 玻尔兹曼分布详解
  14. 搭建SSM全流程框架过程
  15. 便宜php扩展,php扩展【货币问答】- php扩展所有答案 - 联合货币
  16. cad没有命令输入框_cad中怎么输入文字?cad怎么输入文字?
  17. python 对象是什么概念
  18. IE下判断IE版本的语句...[if lte IE 8]……[endif]
  19. 弹出界面 eth1: 设备 eth1 似乎不存在, 初始化操作将被延迟。
  20. 物价上涨 下馆子点菜的省钱办法

热门文章

  1. 光纤收发器的原理及应用_光纤收发器的作用原理
  2. 维基百科创建需要注意哪些问题?
  3. vim删除文本的命令
  4. 强强联合 数睿数据与霍尼韦尔Tridium达成战略合作
  5. 阿里云域名购买流程和备案流程
  6. 不可忽视的UPS电源电池除尘
  7. C语言中数据类型的相关定义与用法
  8. 开发Python用什么工具好?
  9. 阿里云服务器购买之后设置密码、安全组、增加带宽、挂载云盘教程
  10. java.lang.arrayindexoutofboundsexception: Index 13 out of bounds for length 13