ActiveMQ支持的消息协议
ActiveMQ支持哪些协议
ActiveMQ支持多种协议传输和传输方式,允许客户端使用多种协议连接
ActiveMQ支持的协议:AUTO,OpenWire,AMQP,Stomp,MQTT等
ActiveMQ支持的基础传输方式:VM,TCP,SSL,UDP,Peer,Multicast,HTTP(S)等,以及更高级的Failover,Fanout,Discovery,ZerConf方式
ActiveMQ的协议连接配置
在ActiveMQ安装目录的/conf/activemq.xml文件中,通过配置transportConnectors就可以使用多种传输方式。官方的配置文档:http://activemq.apache.org/configuring-transports
ActiveMQ常用的传输方式及配置
TPC:由于TCP具有可靠传输的特性,它在ActiveMQ中也是最常使用的一种协议。默认的配置中,TCP连接的端口为61616.
TCP配置格式:tcp://hostname:port?key=value
TCP配置参数说明:在服务端配置时,参数要以“transport.”开头,在客户端连接时,参数省略“transport.”前缀
TCP服务端配置示例:tcp://localhost:61616?transport.trace=false&transport.soTimeout=6000
TCP客户端示例:tcp://localhost:61616?trace=false&soTimeout=6000
TCP配置参数说明:

SSL:需要一个安全连接的时候可以考虑使用SSL,适用于client和broker在公网的情况
SSL配置格式:ssl://hostname:61616
SSL客户端配置:JMX客户端需要使用ActiveMQSslConnectionFactory类创建连接,brokerUrl以ssl://开头
SSL主机名验证:从ActiveMQ 5.15.6开始,ActiveMQ开始支持TLS主机名验证,默认情况下客户端启用了该验证,而服务端没有启用。服务端配置为 ssl://localhost:61616?transport.verifyHostName=true 客户端配置为 ssl://localhost:61616?verifyHostName=false
NIO: 使用Java的NIO方式对连接进行改进,因为NIO使用线程池,可以复用线程,所以可以用更少的线程维持更多的连接。如果有大量客户端,或者性能瓶颈在网络传输上,可以考虑使用NIO的连接方式
NIO配置格式:nio://hostname:port?key=value
NIO是OpenWire协议的传输方式,其他协议,像AMQP,MQTT,STOMP也有NIO的实现,通常在协议前缀中加“+nio”来区分,如:mqtt+nio://localhost:1883
NIO传输线程使用配置:从5.15.0开始,ActiveMQ支持调整NIO的传输线程,可以设置以下属性
NIO传输线程使用情况配置:属性可以在ActiveMQ安装目录/bin/env中配置,如:
ACTIVEMQ_OPTS="$ACTIVEMQ_OPTS -Dorg.apache.activemq.transport.nio.SelectorManager.corePoolSize=2000 -Dorg.apache.activemq.transport.nio.SelectorManager.maximumPoolSize=2000 -Dorg.apache.activemq.transport.nio.SelectorManager.workQueueCapacity=1024"
NIO+SSL:从ActiveMQ 5.6版本开始,NIO可以支持和NIO搭配使用的传输连接,格式为nio+ssl://0.0.0.0:61616
UDP:与面向连接,可靠的字节流服务的TCP不同,UDP是一个面向数据的简单传输连接,没有TCP的三次握手,所以性能大大强于TCP,但是是以牺牲可靠性为前提,适用于丢失也无所谓的消息。
UDP配置格式:udp://localhost:8123
UDP配置参数说明:
HTTP(S):需要穿越防火墙,可以考虑使用HTTP(S),但由于HTTP(S)时短连接,每次创建连接的成本较高,所以性能最差。通过XML传输数据。
HTTP(S)配置格式:http(s)://localhost:8080?param1=value1¶m2=value2
VM:虚拟机协议(方法直调),使用场景是client和broker在同一个Java虚拟机内嵌的情况,无需网络通信的开销。
VM配置格式:vm://brokerName?marshal=false&broker.persistent=false
VM配置参数说明:
OpenWire协议
OpenWire协议是Apache一种跨语言的协议,允许从不同的语言和平台访问ActiveMQ,是ActiveMQ 4.x以后的版本默认的传输协议。
Open Wire支持TCP,SSL,NIO,UDP,VM等传输方式,直接配置这些连接,就是使用的OpenWire协议,OpenWire有自己的配置参数,客户端和服务端配置的参数名通过前缀“wireFormat.”表示。如:tcp://localhost:61616?wireFormat.cacheEnabled=false
OpenWire的配置参数说明:
MQTT协议
MQTT(Message Queue Telemetry Transport)消息队列遥测传输,是IBM开发的一个即时通讯协议,已成为物联网通信的标准。
MQTT的结构简单,相对于其他协议,它更加轻量级。适合在计算能力有限,低带宽,不可靠的网络环境使用。
MQTT的发布订阅模型:
服务质量(QoS)级别是一种关于发生者和接收者之间信息投递的保证协议。MQTT中有三种QoS级别:至多一次(level 0),至少一次(level 1),只有一次(level 2)
QoS是MQTT的一个主要功能,它使得在不可靠的网络下进行通信变得简单,因为即便是在非常不可靠的网络下,协议也可以掌控是否需要重发消息并保证消息到达。它也能帮助客户端根据网络环境和程序逻辑来自由选择QoS
AUTO协议
AUTO,自动检测协议,从ActiveMQ 5.13.0开始,ActiveMQ开始支持协议格式检测,可以自动检测OpenWire,STOMP,AMQP和MQTT,允许这四种类型的客户端共享一个传输。
配置示例:auto://loacalhost:5671 ,auto+nio+ssl://localhost:5671

ActiveMQ支持的消息协议的更多相关文章
- 消息中间件-ActiveMQ支持的消息协议
package com.study.mq.a1_example.helloworld.queue; import org.apache.activemq.ActiveMQConnectionFacto ...
- ActiveMQ学习笔记(7)----ActiveMQ支持的传输协议
1. 连接到ActiveMQ Connector: Active提供的,用来实现连接通讯的功能,包括:client-to-broker,broker-to-broker.ActiveMQ允许客户端使用 ...
- 分布式-信息方式-ActiveMQ支持的传输协议和配置
ActiveMQ支持的传输协议和配置■ Connector: ActiveMQ提供的,用来实现连接通讯的功能.包括: client-to-broker ...
- ActiveMQ支持的传输协议
------------------------------------------------------ ActiveMQ支持的client-broker通讯协议有:TCP.NIO.UDP.SSL ...
- JMS学习十(ActiveMQ支持的传输协议)
ActiveMQ提供了一种连接机制,这种连接机制使用传输连接器(TransportConnector)实现客户端与代理(client - to - broker)之间的通信. 网络连接器(networ ...
- php 利用activeMq+stomp实现消息队列
php 利用activeMq+stomp实现消息队列 一.activeMq概述 ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J ...
- 架构设计:系统间通信(20)——MQ:消息协议(下)
(接上文<架构设计:系统间通信(19)--MQ:消息协议(上)>) 上篇文章中我们重点讨论了"协议"的重要性.并为各位读者介绍了Stomp协议和XMPP协议. 这两种协 ...
- activemq读取剩余消息队列中消息的数量
先上原文链接: http://blog.csdn.net/bodybo/article/details/5647968 ActiveMQ在C#中的应用 ActiveMQ是个好东东,不必多说.Acti ...
- JMS学习(五)--ActiveMQ中的消息的持久化和非持久化 以及 持久订阅者 和 非持久订阅者之间的区别与联系
一,消息的持久化和非持久化 ①DeliveryMode 这是传输模式.ActiveMQ支持两种传输模式:持久传输和非持久传输(persistent and non-persistent deliver ...
随机推荐
- Python Django撸个WebSSH操作Kubernetes Pod(下)- 终端窗口自适应Resize
追求完美不服输的我,一直在与各种问题斗争的路上痛并快乐着 上一篇文章Django实现WebSSH操作Kubernetes Pod最后留了个问题没有解决,那就是terminal内容窗口的大小没有办法调整 ...
- 还是只使用console.log()进行调试?好吧,其实还有更多。
在浏览器控制台中打印消息无疑可以拯救所有开发人员. console.log()消息就像您的大多数疾病的药,同时调试了代码中的一些有线问题. 那里的大多数开发人员都喜欢— 让我们在浏览器中打印消息以了解 ...
- 故事:走进JVM的世界(图文并茂)
注意!本文较长,建议先收藏再阅读.更多文章可以关注作者公众号:码上实战 你也可以 star 我的 GitHub上本文所属仓库:https://github.com/flyhero/MarkNote 说 ...
- VirtualBox 安装 Centos8 使用 Xshell 连接
1.下载CentOS CentOS下载地址:https://wiki.centos.org/Download 这里选择本地安装包,网络安装包在安装时需要在线下载资源比较慢 2.安装VirtualBox ...
- hdu1532 最大流板子题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1532 题目给出源点和漏点,还有一些边,要求源与漏之间的最大流,我采用了Edmonds Karp算法,该 ...
- Check If It Is a Straight Line
2019-10-21 10:35:33 问题描述: 问题求解: public boolean checkStraightLine(int[][] coordinates) { int n = coor ...
- 关于 word2vec 如何工作的问题
2019-09-07 22:36:21 问题描述:word2vec是如何工作的? 问题求解: 谷歌在2013年提出的word2vec是目前最常用的词嵌入模型之一.word2vec实际是一种浅层的神经网 ...
- Android之MVC、MVP、MVVM
本文将详细阐述以下MVC.MVP.MVVM三种理念的定义 MVC MVC全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个 基本部分:模型(Model ...
- NLPer入门指南 | 完美第一步
介绍 你对互联网上的大量文本数据着迷吗?你是否正在寻找处理这些文本数据的方法,但不确定从哪里开始?毕竟,机器识别的是数字,而不是我们语言中的字母.在机器学习中,这可能是一个棘手的问题. 那么,我们如何 ...
- 不可被忽视的操作系统( FreeRTOS )【2】
本文章总结基于官方FreeRTOS手册,测试系统为ESP32的IDF 4.0 本篇续上一篇<不可被忽视的操作系统( FreeRTOS )[1]> 其中上一篇主要内容为: FreeRTOS介 ...