hivemq/hivemq-community-edition

GitHub: hivemq/hivemq-community-edition

HiveMQ CE 是一个基于 Java 的开源 MQTT 消息代理,完整实现 MQTT 3.x 和 5.0 协议,为物联网设备提供可靠的消息路由与通信能力。

Stars: 1203 | Forks: 286

++++

++++ = HiveMQ 社区版 image:https://maven-badges.herokuapp.com/maven-central/com.hivemq/hivemq-community-edition-embedded/badge.svg["Maven Central",link="https://maven-badges.herokuapp.com/maven-central/com.hivemq/hivemq-community-edition-embedded"] image:https://jitpack.io/v/hivemq/hivemq-community-edition.svg["JitPack",link="https://jitpack.io/#hivemq/hivemq-community-edition"] image:https://javadoc.io/badge2/com.hivemq/hivemq-community-edition-embedded/javadoc.svg["javadoc",link=https://javadoc.io/doc/com.hivemq/hivemq-community-edition-embedded] image:https://img.shields.io/github/actions/workflow/status/hivemq/hivemq-community-edition/check.yml?branch=master[GitHub Workflow Status (with branch),link=https://github.com/hivemq/hivemq-community-edition/actions/workflows/check.yml?query=branch%3Amaster] HiveMQ CE 是一个基于 Java 的开源 MQTT broker,完全支持 MQTT 3.x 和 MQTT 5。 HiveMQ CE 是 HiveMQ 企业连接和消息平台的基础,并实现了所有的 MQTT 功能。 该项目是许多大型 MQTT 部署的技术核心,现在作为开源软件在 Apache 2 许可证下发布。 * 网站: * 文档: * 社区论坛: * 贡献指南:link:CONTRIBUTING.adoc[Contributing.adoc] * 许可证:本仓库中的源文件基于 link:LICENSE[Apache License Version 2.0] 发布。 == 功能特性 * 包含所有 MQTT 3.1、3.1.1 和 MQTT 5.0 功能 * 支持基于 TCP、TLS、WebSocket 和 Secure WebSocket 传输的 MQTT * Java Extension SDK 支持: ** 认证 ** 授权 ** 客户端初始化 ** MQTT 数据包拦截器 ** 与发布、保留消息、客户端和订阅进行交互 * 可在 Windows、Linux 和 MacOS 上运行(推荐使用 Linux) * 嵌入式模式 HiveMQ CE 兼容所有的 MQTT 3 和 MQTT 5 客户端,包括 Eclipse Paho 和 [HiveMQ MQTT Client]。 == 文档 HiveMQ CE 的文档可以在 [这里] 找到。 MQTT 资源 * [MQTT Essentials] * [MQTT 5 Essentials] == HiveMQ 社区论坛 如果您对 HiveMQ 社区版有任何疑问或想进行讨论,我们全新的 [HiveMQ 社区论坛] 是理想的地方。 == 如何使用 === 快速开始 * 下载最新的 [HiveMQ CE 二进制包]。 * 解压该压缩包。 * 运行压缩包 bin 文件夹中的 run.sh (Linux/OSX) 或 run.bat (Windows)。 [source,bash] ---- cd hivemq-ce- bin/run.sh ---- [IMPORTANT] ==== 运行 HiveMQ CE 至少需要 Java 11 版本。 编译该项目并运行测试至少需要 Java 21 版本。 如果您不确定,可以在命令行中输入 `java -version` 来检查已安装的 Java 版本。 ==== 您现在可以将 MQTT 客户端连接到 `:1883`。 [CAUTION] ==== 如果您想将外部网络上的设备连接到 HiveMQ CE,请确保您的服务器可以从这些网络访问,并且所需的端口(默认:1883)可以通过防火墙访问。 ==== === 即时构建 有关此仓库当前分支以及特定提交的即时构建版本可在 [这里] 获取。 === 使用 Docker 运行 所有版本以及 `master` 分支的当前状态均可在 DockerHub 上的 [hivemq/hivemq-ce] 仓库中找到。 要运行此镜像,只需执行以下命令: [source,bash] ---- docker run --name hivemq-ce -d -p 1883:1883 hivemq/hivemq-ce ---- 要更改默认的日志级别,您可以在运行容器时设置环境变量 `HIVEMQ_LOG_LEVEL`: [source,bash] ---- docker run --name hivemq-ce -e HIVEMQ_LOG_LEVEL=INFO -d -p 1883:1883 hivemq/hivemq-ce ---- === 从源码构建 ==== 构建二进制包 检出 Git 仓库并构建二进制包。 [source,bash] ---- git clone https://github.com/hivemq/hivemq-community-edition.git cd hivemq-community-edition ./gradlew hivemqZip ---- 软件包 `hivemq-ce-.zip` 将创建在子文件夹 `build/distributions/` 中。 ==== 构建 Docker 镜像 检出 Git 仓库并构建 Docker 镜像。 [source,bash] ---- git clone https://github.com/hivemq/hivemq-community-edition.git cd hivemq-community-edition ./gradlew loadOciImage ---- 将在本地创建 Docker 镜像 `hivemq/hivemq-ce:snapshot`。 有关更多开发说明,请参阅 link:CONTRIBUTING.adoc[贡献指南]。 === 嵌入式模式 HiveMQ 社区版提供了一种嵌入式模式和编程 API,以便与 Java/Java EE 软件进行集成。 ==== Gradle 如果您使用 Gradle,请将以下代码包含在您的 `build.gradle(.kts)` 文件中。 [source,groovy] ---- dependencies { implementation("com.hivemq:hivemq-community-edition-embedded:2026.5") } ---- ==== Maven 如果您使用 Maven,请将以下代码包含在您的 `pom.xml` 文件中。 [source,xml] ---- ... com.hivemq hivemq-community-edition-embedded 2026.5 ... ---- NOTE: 您必须将编译器版本设置为 `11` 或更高。 ==== 用法 通过 `com.hivemq.embedded.EmbeddedHiveMQBuilder` 进入嵌入式模式。 [source,java] ---- public class Main { ``` public static void main(String[] args) { final EmbeddedHiveMQBuilder embeddedHiveMQBuilder = EmbeddedHiveMQ.builder() .withConfigurationFolder(Path.of("/path/to/embedded-config-folder")) .withDataFolder(Path.of("/path/to/embedded-data-folder")) .withExtensionsFolder(Path.of("/path/to/embedded-extensions-folder")); ... } ``` } ---- 构建完成后,可以使用 `start()` 启动 EmbeddedHiveMQ。 [source,java] ---- public class Main { ``` public static void main(String[] args) { final EmbeddedHiveMQBuilder embeddedHiveMQBuilder = EmbeddedHiveMQ.builder(); ... try (final EmbeddedHiveMQ hiveMQ = embeddedHiveMQBuilder.build()) { hiveMQ.start().join(); ... } catch (final Exception ex) { ex.printStackTrace(); } } ``` } ---- 正在运行的 EmbeddedHiveMQ 可以使用 `stop()` 停止。 [source,java] ---- public class Main { ``` public static void main(String[] args) { ... try (final EmbeddedHiveMQ hiveMQ = embeddedHiveMQBuilder.build()) { ... hiveMQ.stop().join(); } catch (final Exception ex) { ex.printStackTrace(); } } ``` } ---- 与嵌入式的 HiveMQ 类似,可以使用 `com.hivemq.embedded.EmbeddedExtensionBuilder` 构建嵌入式 extension。 然后将该嵌入式 extension 添加到嵌入式 HiveMQ 构建器中。 [source,java] ---- public class Main { ``` public static void main(String[] args) { final EmbeddedExtension embeddedExtension = EmbeddedExtension.builder() .withId("embedded-ext-1") .withName("Embedded Extension") .withVersion("1.0.0") .withPriority(0) .withStartPriority(1000) .withAuthor("Me") .withExtensionMain(new MyEmbeddedExtensionMain()) .build(); final EmbeddedHiveMQBuilder builder = EmbeddedHiveMQ.builder() .withConfigurationFolder(Path.of("/path/to/embedded-config-folder")) .withDataFolder(Path.of("/path/to/embedded-data-folder")) .withExtensionsFolder(Path.of("/path/to/embedded-extensions-folder")) .withEmbeddedExtension(embeddedExtension); try (final EmbeddedHiveMQ hiveMQ = builder.build()) { hiveMQ.start().join(); //do something with hivemq } catch (final Exception ex) { ex.printStackTrace(); } } private static class MyEmbeddedExtensionMain implements ExtensionMain { @Override public void extensionStart(final @NotNull ExtensionStartInput extensionStartInput, final @NotNull ExtensionStartOutput extensionStartOutput) { // my extension start code } @Override public void extensionStop(final @NotNull ExtensionStopInput extensionStopInput, final @NotNull ExtensionStopOutput extensionStopOutput) { // my extension stop code } } ``` } ---- NOTE: EmbeddedHiveMQ 是一种类似于网络连接的资源,它实现了 `java.lang.AutoCloseable` 接口。 请务必使用 ARM (_try-with-resources_) 机制,或者确保调用 `close()`。 ==== 排除依赖 当您部署包含 EmbeddedHiveMQ 的应用程序时,排除某些依赖项可能会很有用。 排除依赖的一种方法是使用 [maven shade plugin]。 [source,xml] ---- ... org.apache.maven.plugins maven-shade-plugin 3.2.1 package shade org.rocksdb:rocksdbjni ch.qos.logback:logback-classic *:* META-INF/*.SF META-INF/*.DSA META-INF/*.RSA ... ---- ===== 排除 RocksDB 要排除 `org.rocksdb:rocksdbjni` 依赖项,必须在调用 `start()` 之前更改两个内部配置。 [source,java] ---- public class Main { ``` public static void main(String[] args) { ... try (final EmbeddedHiveMQ hiveMQ = embeddedHiveMQBuilder.build()) { InternalConfigurations.PAYLOAD_PERSISTENCE_TYPE.set(PersistenceType.FILE); InternalConfigurations.RETAINED_MESSAGE_PERSISTENCE_TYPE.set(PersistenceType.FILE); hiveMQ.start().join(); ... } catch (final Exception ex) { ex.printStackTrace(); } } ``` } ---- // Scarf 跟踪像素 == 贡献 如果您想为 HiveMQ CE 做贡献,请参阅 link:CONTRIBUTING.adoc[贡献指南]。 == 许可证 HiveMQ 社区版基于 `APACHE LICENSE, VERSION 2.0` 许可。 许可证副本可在 link:LICENSE[这里] 找到。
标签:JS文件枚举, MQTT Broker, 便携式工具, 后台面板检测, 域名枚举, 消息中间件, 物联网, 请求拦截, 通信架构