JMS 之 Active MQ 的消息传输
本文使用Active MQ5.6
一、消息协商器(Message Broker)
broke:消息的交换器,就是对消息进行管理的容器。ActiveMQ 可以创建多个 Broker,客户端与ActiveMQ交互,实际上都是与ActiveMQ中的Broker交互,Broker配置在${MQ_HOME}\conf\activemq.xml。
二、连接器(Connectors)
(一)、传输连接器 (transportConnectors)
transportConnectors 连接器:就是建立broker与消息生产者、消息消费者之间的交互。
传输连接器常用的协议:
在Active MQ中常用的连接协议:tcp、udp、nio、ssl、http、https、vm。如果使用ssl协议需要配置证书,使用http或者https需要使用httpclient来发送接收消息。
(1)TCP默认的协议
tcp://hostname:port?key=value&key=value 后面的参数选填
使用TCP协议的好处
- 高效的:该协议连接使用了OpenWire协议,通过把消息转换成字节流,性能非常好
- 可用性:TCP是使用非常广泛的网络协议,基本上所有的平台都支持
TCP配置示例conf/activemq.xml :
<transportConnectors>
<!--activemq 的默认连接 tcp-->
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616"/>
</transportConnectors>
(2)、NIO
a、NIO协议和TCP协议类似,但NIO更侧重于底层的访问操作。它允许开发人员对同一资源可有 更多的client调用和服务端有更多的负载。
b、适合使用NIO协议的场景:
可能有大量的Client去链接到Broker上 一般情况下,大量的Client去链接Broker是被操作系统的线程数所限制的。因此, NIO的实现比TCP需要更少的线程去运行,所以建议使用NIO协议
可能对于Broker有一个很迟钝的网络传输 NIO比TCP提供更好的性能
c、NIO连接的URI形式:nio://hostname:port?key=value 后面的参数选填
d、NIO配置实例 conf/activemq.xml:
<transportConnectors>
<!-- 设置一个NIO的连接-->
<transportConnector name="nio" uri="nio://0.0.0.0:61617"/>
</transportConnectors>
(3)、UDP
a、UDP和TCP的区别
- TCP是一个原始流的传递协议,意味着数据包是有保证的,换句话说,数据包是不会被复 制和丢失的。UDP,另一方面,它是不会保证数据包的传递的
- TCP也是一个稳定可靠的数据包传递协议,意味着数据在传递的过程中不会被丢失。这样 确保了在发送和接收之间能够可靠的传递。相反,UDP仅仅是一个链接协议,所以它没有可 靠性之说
- TCP是被用在稳定可靠的场景中使用的;UDP通常用在快速数据传递和不 怕数据丢失的场景中,还有ActiveMQ通过防火墙时,只能用UDP
b、UDP连接的URI形式:udp://hostname:port?key=value
c、配置实例 conf/activemq.xml
<transportConnectors>
<transportConnector name="udp" uri="udp://localhost:61618"/>
</transportConnectors>
(4)、SSL
底层是TCP协议,但是对传输数据进行了加密
a、适用场景:MQ暴露在外网,要求客户端与broker之间通讯
b、使用步骤:
b-1、创建SSL协议:
b-2、配置Broker SSL协议 conf/activemq.xml:
<sslContext>
<sslContext keyStore="F:/beifeng/apache-activemq-5.6.0/conf/mybroker.ks"
keyStorePassword="test123" />
</sslContext>
b-3、配置客户端SSL协议:
c、SSL的连接的URI形式:ssl://hostname:port?key=value
d、配置实例 conf/activemq.xml
<transportConnectors>
<transportConnector name="ssl" uri="ssl://localhost:61619"/>
</transportConnectors>
(5)HTTP、HTTPS
a、通过jetty容器来接收http协议的mq消息
b、用于只允许基本HTTP服务通过的网络环境
c、通过httpclient来发送/接收消息,需要添加额外的java包 Httpclient、Xstream、activemq-optional
d、URI:http://hostname:port?key=value
e、配置实例conf/activemq.xml:
<transportConnectors>
<transportConnector name="http" uri="http://localhost:8080"/>
</transportConnectors>
配置 HTTPS则需要在jetty.xml中配置相关证书 HTTPS= HTTP+SSL
(二、)网络连接器(NetWorkConnectors)
NetWorkConnectors:用于Broke与Broke之间的交互 ,主要是ActiveMq集群部署时。
JMS 之 Active MQ 的消息传输的更多相关文章
- 深入浅出 JMS(三) - ActiveMQ 消息传输
深入浅出 JMS(三) - ActiveMQ 消息传输 一.消息协商器(Message Broker) broke:消息的交换器,就是对消息进行管理的容器.ActiveMQ 可以创建多个 Broker ...
- JMS 之 Active MQ 消息存储
一.消息的存储方式 ActiveMQ支持JMS规范中的持久化消息与非持久化消息 持久化消息通常用于不管是否消费者在线,它们都会保证消息会被消费者消费.当消息被确认消费后,会从存储中删除 非持久化消息通 ...
- java 通过jmx获取active mq队列消息
一.修改active mq配置文件 修改\conf\activemq.xml,带下划线部分 <!-- Licensed to the Apache Software Foundation (AS ...
- JMS 之 Active MQ 启动嵌入式Broke
一.如何启动active MQ 服务 (一).使用命令启动 /bin 目录下 ./activemq start 默认使用conf/activemq.xml 配置文件 b.[root@localhost ...
- JMS 之 Active MQ的安全机制
一.认证 认证(Authentication):验证某个实体或者用户是否有权限访问受保护资源. MQ提供两种插件用于权限认证:(一).Simple authentication plug-in:直接把 ...
- JMS 之 Active MQ 的spring整合
一.与spring整合实现ptp的同步接收消息 pom.xml: <!-- https://mvnrepository.com/artifact/org.springframework/spri ...
- Active MQ C#实现
原文链接: Active MQ C#实现 内容概要 主要以源码的形式介绍如何用C#实现同Active MQ 的通讯.本文假设你已经正确安装JDK1.6.x,了解Active MQ并有一定的编程基础. ...
- Active MQ的初步探索
参考链接: http://blog.csdn.net/jiuqiyuliang/article/details/46701559 JMS是jee规范,active MQ是该规范的实现 Active M ...
- ZeroMQ接口函数之 :zmq - 0MQ 轻量级消息传输内核
官方网址:http://api.zeromq.org/4-0:zmq zmq(7) 0MQ Manual - 0MQ/3.2.5 Name zmq – ØMQ 轻量级消息传输内核 Synopsis # ...
随机推荐
- Spring链接汇总
Spring Boot专题 基础入门内容 SpringBoot快速入门 Why Spring Boot 使用Intellij中的Spring Initializr来快速构建Spring Boot/Cl ...
- struts2学习(15)struts2防重复提交
一.重复提交的例子: 模拟一种情况,存在延时啊,系统比较繁忙啊啥的. 模拟延迟5s钟,用户点了一次提交,又点了一次提交,例子中模拟这种情况: 这样会造成重复提交: com.cy.action.St ...
- postman 设置代理
点击右上角 图标(亮着的为录制中) 设置端口 和存放位置 把浏览器设置代理 localhost 8080 即可 filter中可以通过正则表达式来匹配自己关心的url 2018.9 后记: 今 ...
- 字符串的问题(substr,find用法)
链接:https://www.nowcoder.com/acm/contest/77/C来源:牛客网 字符串的问题 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他 ...
- mysql内置函数,在mysql里面利用str_to_date()把字符串转换为日期格式
mysql内置函数,在mysql里面利用str_to_date()把字符串转换为日期格式 示例:分隔符一致,年月日要用%号 select str_to_date('2008-4-2 15:3:28', ...
- Futures
Futures is a framework for expressing asynchronous code in C++ using the Promise/Future pattern. Ove ...
- 仅用CSS3创建h5预加载跳动圈
<head> <meta charset="UTF-8"> <title></title> <style type=" ...
- EDMX 残余表信息清理方法
今天出现的edmx报错,怎么也无法删除的问题,解决了.1.打开edxm2.删除所有表模型3.右键,选择模型浏览器4.在实体类型查看是否还有没有删除的模型如果有,点击删除5.重新生成edxm.解决问题.
- Flask之视图(一)
2.关于Flask 知识点 从Hello World开始 给路由传递参数 返回状态码 重定向 正则URL 设置cookie和获取cookie 扩展 上下文 请求钩子 Flask装饰器路由的实现 Fla ...
- mysql 更改密码
Mac 安装mysql时会生成一个默认密码: 这个可以在通知中找到,如果你需要更改密码则继续看下面, 今天给mac安装了MySQL,安装过程非常的顺利,但是在用一个可视化工具进行连接时,需要输入密码, ...