Rumah > Java > javaTutorial > JMS 之 Active MQ 的消息传输(图文详解)

JMS 之 Active MQ 的消息传输(图文详解)

怪我咯
Lepaskan: 2017-06-30 10:47:57
asal
2359 orang telah melayarinya

下面小编就为大家带来一篇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>
Salin selepas log masuk

(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>
Salin selepas log masuk

(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>
Salin selepas log masuk

(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>
Salin selepas log masuk

b-3、配置客户端SSL协议:

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

d、配置实例 conf/activemq.xml

<transportConnectors>
   <transportConnector name="ssl" uri="ssl://localhost:61619"/>
 </transportConnectors>
Salin selepas log masuk

(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>
Salin selepas log masuk


配置 HTTPS则需要在jetty.xml中配置相关证书 HTTPS= HTTP+SSL

(二、)网络连接器(NetWorkConnectors)

NetWorkConnectors:用于Broke与Broke之间的交互 ,主要是ActiveMq集群部署时。

以上这篇JMS 之 Active MQ 的消息传输(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

Atas ialah kandungan terperinci JMS 之 Active MQ 的消息传输(图文详解). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan