smartboot 开源组织 smartboot 开源组织
首页
  • smart-socket
  • smart-http
  • smart-servlet
  • smart-mqtt
  • smart-license
  • feat
❤️开源捐赠
💰付费服务
🏠加入社区
  • Gitee (opens new window)
  • Github (opens new window)
首页
  • smart-socket
  • smart-http
  • smart-servlet
  • smart-mqtt
  • smart-license
  • feat
❤️开源捐赠
💰付费服务
🏠加入社区
  • Gitee (opens new window)
  • Github (opens new window)
  • 产品手册

    • 使用说明
    • 如何选择Broker产品
    • 我们的用户
    • 发版记录
  • 开发参考

    • 事件总线
      • 接口设计
      • 事件类型
        • 接收消息(RECEIVE_MESSAGE)
        • 输出消息(WRITE_MESSAGE)
        • Broker启动服务(BROKER_STARTED)
        • Broker停止服务(BROKER_DESTROY)
        • CONNECT
        • DISCONNECT
        • 会话初始化(SESSION_CREATE)
        • 创建Topic实例(TOPIC_CREATE)
        • 订阅Topic(SUBSCRIBE_TOPIC)
        • RECEIVEPUBLISHMESSAGE
        • PUSHPUBLISHMESSAGE
    • 插件开发
    • 性能压测
    • 缓冲区调优
  • smart-mqtt
  • 开发参考
三刀
2022-12-05
目录

事件总线

smart-mqtt 所有的数据、服务都是依托于事件总线驱动的。 数据总线造就了 smart-mqtt 极具灵活的扩展性,熟练掌握并运用该特性可以轻松应对各类复杂的场景需求。

# 接口设计

从消息总线的接口设计可以看出,它的运作原理就是经典的生产/消费模型。

public interface EventBus {

    <T> void subscribe(EventType<T> type, EventBusSubscriber<T> subscriber);

    <T> void subscribe(List<EventType<T>> types, EventBusSubscriber<T> subscriber);

    <T> void publish(EventType<T> eventType, T object);
}
1
2
3
4
5
6
7
8

其中EventBus#publish已被安插在各个恰当的位置,当发生相应事件的时候会由 smart-mqtt 框架自动触发。

为了实现 MQTT Broker 的基础功能,smart-mqtt 已经通过EventBus#subscribe订阅了部分事件。

当然,当你开发插件的时候,也可以通过订阅关注的事件实现自己想要的功能。 但在此之前,最好先了解下各个事件类型的特性及触发条件。

# 事件类型

# 接收消息(RECEIVE_MESSAGE)

触发条件:完成MQTT消息解码,并即将进行消息处理时。

# 输出消息(WRITE_MESSAGE)

触发条件:即将往TCP通道发送一条消息。

# Broker启动服务(BROKER_STARTED)

触发条件:Broker服务完成初始化,并启动成功。

# Broker停止服务(BROKER_DESTROY)

触发条件:Broker 停止服务。

# CONNECT

触发条件:客户端发送的 ConnectMessage 认证通过。

# DISCONNECT

触发条件:客户端与Broker的TCP连接断开。

# 会话初始化(SESSION_CREATE)

触发条件:建立了新的 TCP 连接,并完成 MQTT Session 初始化。

# 创建Topic实例(TOPIC_CREATE)

触发条件:Broker 接收到一个新的Topic订阅。

# 订阅Topic(SUBSCRIBE_TOPIC)

触发条件:客户端连接订阅了某个Topic。

# RECEIVE_PUBLISH_MESSAGE

触发条件:Broker收到来自客户端发送的 PublishMessage。

# PUSH_PUBLISH_MESSAGE

触发条件:Broker向某个客户端连接推送一次订阅的消息。

发版记录
插件开发

← 发版记录 插件开发→

Theme by Vdoing | Copyright © 2017-2025 三刀
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式