1.简要介绍.md

MQTT 协议介绍

MQ遥测传输(MQTT)是一种轻量级基于代理的发布/订阅消息传递协议开放设计,简单、重量轻、容易实现。 这些特点使它适合用在受约束的环境,例如,但不限于:

  • 网络是昂贵的,在低带宽或不可靠
  • 当运行在一个处理器或内存资源有限的嵌入式设备

协议的特点包括:

  • 发布/订阅消息模式提供一对多的信息分布和分离的应用程序
  • 不可知论者的消息传输到负载的内容
  • 使用TCP / IP提供基本的网络连接
  • 开销(固定长度的头部是2个字节),和协议交换最小化减少网络流量
  • 一种机制来通知相关方异常断开客户端使用遗嘱特性

三个消息传递的服务质量:

“最多一次”,负责传递消息的最大努力底层TCP / IP网络。 会发生信息丢失或重复。 这个水平可以被使用,例如,环境传感器数据,它并不重要,如果一个人失去阅读下一个不久将公布。

“至少一次”,确保消息到达,但可能发生重复。

“只有一次”,确保消息到达,完全一次。 这一级别可使用,例如,在计费系统中,消息重复或丢失会导致不正确的结果。

参考:http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/mqtt-v3r1.html#qos-flows

Artemis介绍

JBoss EAP 6的消息系统是通过HornetQ实现,这是一个JBoss的社区项目。后来HornetQ捐献给了Apache ActiveMQ项目,HornetQ社区加入对HornetQ的支持,并创建了新的消息系统Apache ActiveMQ Artemis,这就是JBoss EAP 7所使用的消息系统。Apache ActiveMQ Artemis提供了对JBoss EAP 6的兼容性支持,对HornetQ也提供了协议上的支持。

JMS 2.0系统API组成:

Apache ActiveMQ Artemis核心API
Apache ActiveMQ Artemis内核API中,把JMS Queue和Topic统一包装为一个地址(address),无差别作为核心queue操作,并以"jms.queue"为前缀。对于JMS topic,可以绑定一个或者多个queue到核心queue(Topic的表示)上,这些queue的地址被当做这个Topic的订阅(subscription)。对于JMS Queue,有唯一的queue绑定到该核心queue(Queue的表示),表示这个JMS Queue。

核心API是JMS之外的客户端API,一般可以提供比JMS更丰富的功能。

Apache ActiveMQ Artemis总览

  • Apache ActiveMQ Artemis已经支持的协议:

    • JMS
    • System specific APIs
    • Restful API
    • AMQP(Advanced Message Queuing Protocol)
    • MQTT
    • STOMP
    • OPENWIRE
  • Apache ActiveMQ Artemis协议

    • MQP
    • OpenWire
    • MQTT
    • STOMP
    • HornetQ (for use with HornetQ clients).
    • CORE (Artemis CORE protocol)
  • 核心架构

  • 消息模型


2.Artemis 配置.md

服务器安装

下载

http://activemq.apache.org/artemis/download.html

创建broker

将artemis解压完成后,在重新建一个文件夹artmisbroker

运行
artemis.cmd create C:\artmisbroker --user mq --password 123
即可在artmisbroker目录下生成所需的文件

运行artemis 
"C:\artmisbroker\bin\artemis" run

使用Windows service方式运行artemis
"C:\artmisbroker\bin\artemis-service.exe" install
"C:\artmisbroker\bin\artemis-service.exe" start

停止 windows service:
"C:\artmisbroker\bin\artemis-service.exe" stop

卸载windows service
"C:\artmisbroker\bin\artemis-service.exe" uninstall

访问 http://localhost:8161/console 进入监视界面

修改用户:./artemis user add --user guest --password guest --role mq

配置文件说明

cd /var/lib/mybroke

bin: 实例的执行文件脚步

etc: 实例的所有配置文件

artemis.profile 实例环境、端口配置、jvm配置

artemis-roles.properties

artemis-users.properties

bootstrap.xml web启动配置,插件位置,端口

<broker xmlns="http://activemq.org/schema">

   <jaas-security domain="activemq"/>

   <!-- artemis.URI.instance is parsed from artemis.instance by the CLI startup.
        This is to avoid situations where you could have spaces or special characters on this URI -->
   <server configuration="file:/var/lib/mybroker/etc//broker.xml"/>

   <!-- The web server is only bound to localhost by default -->
   <web bind="http://0.0.0.0:8161" path="web">
       <app url="activemq-branding" war="activemq-branding.war"/>
       <app url="artemis-plugin" war="artemis-plugin.war"/>
       <app url="console" war="console.war"/>
   </web>


</broker>

broker.xml broker 配置文件,accept,address,plugin

 <addresses>
         <address name="DLQ">
            <anycast>
               <queue name="DLQ" />
            </anycast>
         </address>
         <address name="ExpiryQueue">
            <anycast>
               <queue name="ExpiryQueue" />
            </anycast>
         </address>
        <address name="zhuyunhui">
            <anycast>
               <queue name="zhuyunhui" />
           </anycast>
         </address>


      </addresses>

jolokia-access.xml

logging.properties

login.config 配置用户角色信息等

management.xml 管理权限,jmx端口等

data: 存储持久化消息数据

log: 存储滚动日志文件

tmp: 存储临时文件,broken运行期间安全的删除


3.MQTT 服务器对比.md

名称社区语言集群备注
Apache ActiveMq Artemis活跃java支持代码量不大,支持很多其他协议适配jms,控制台功能全,支持plugin
EMQ活跃Elang支持中国技术公司维护,后台功能全,支持plugin
Mosquitto活跃C语言支持Eclipse 产品,历史悠久
moquette活跃java支持代码量少,适合自定义,使用netty作为通信框架,可能不稳定

MQTT Proxy(confluent 提供的一种mqtt网关)

MQTT Proxy provides a scalable and lightweight interface that allows MQTT clients to produce messages to Kafka directly, in a Kafka-native way that avoids redundant replication and increased lag.

  • 客户端支持
    • Eclipse Paho Java
    • mqtt-client
    • go-mqtt

Copyright © 2018 INSTALL.REN