Skip to content

An MQTT proxy server that can run on the cloud and edge

License

Notifications You must be signed in to change notification settings

quickmsg/nodemq

Repository files navigation

NodeMQ An ultra-lightweight, high-performance edge MQTT message proxy server

English. 中文简体

This project is a bold experimental project to build a straight-line binary based on GraalVM (no JDK installation required). Project startup memory only 20MB, millimeter-level startup speed, let your server idle!

Function

Get started fast

The default provides Windows and Linux-x64 runable binary files, other platforms need to package their own source code compilation, you can contact us after packaging, provide runable binary to us oh!

Binary download

system download
Windows binary file
Linux-amd64 binary file

Currently we offer the Windows platform as well as Linux-X86 runnable binaries

Linux source code compilation

Install GraalVM-CE

download

Install zlib-devel

Debian:

sudo apt-get update

sudo apt-get install zlib1g-dev

Redhat:

sudo yum update -y

sudo yum install zlib-devel

Package and compile (linux)

Download the source code and go to the NodeMQ project directory

./mvnw package -P native

After the compilation is complete, the following log appears:

------------------------------------------------------------------------------------------------------------------------
Recommendations:
INIT: Adopt '--strict-image-heap' to prepare for the next GraalVM release.
HEAP: Set max heap for improved and more predictable memory usage.
CPU:  Enable more CPU features with '-march=native' for improved performance.
Print of Dashboard dump output ended.
------------------------------------------------------------------------------------------------------------------------
26.6s (14.1% of total time) in 243 GCs | Peak RSS: 2.78GB | CPU load: 3.58
------------------------------------------------------------------------------------------------------------------------
Produced artifacts:
/root/nodemq/NodeMQ-master/target/NodeMQ (executable)
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Finished generating 'NodeMQ' in 3m 7s.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  03:13 min
[INFO] Finished at: 2024-04-19T15:06:06+08:00
[INFO] ------------------------------------------------------------------------

After packaging is complete, the executable NodeMQ is generated in the target directory, and the service is run by running ./NodeMQ

Configuration details

After running the project, a mqtt.json file is generated in the run directory (if there is a readable mqtt.json file), as follows:

{
  "mqtt" : [ {
    "host" : "0.0.0.0",
    "port" : 1883,
    "maxMessageSize" : 65535,
    "connectTimeout" : 3,
    "wiretap" : false,
    "ssl" : null,
    "useWebsocket" : false,
    "websocketPath" : "/mqtt",
    "proxy" : false,
    "maxQosLevel" : 2,
    "supportWildcardSubscribe" : true,
    "supportShareSubscribe" : true,
    "retrySize" : 10,
    "retryInterval" : 2000
  }, {
    "host" : "0.0.0.0",
    "port" : 8083,
    "maxMessageSize" : 65535,
    "connectTimeout" : 3,
    "wiretap" : false,
    "ssl" : null,
    "useWebsocket" : true,
    "websocketPath" : "/mqtt",
    "proxy" : false,
    "maxQosLevel" : 2,
    "supportWildcardSubscribe" : true,
    "supportShareSubscribe" : true,
    "retrySize" : 10,
    "retryInterval" : 2000
  } ],
  "http" : {
    "port" : 8080,
    "accessLog" : false,
    "ssl" : null
  },
  "system" : {
    "shareStrategy" : "RANDOM",
    "maxSessionMessageSize" : 1000,
    "maxRetainMessageSize" : 1000,
    "maxRetainExpiryInterval" : 604800,
    "unConfirmFlightWindowSize" : 100
  },
  "log" : {
    "level" : "INFO",
    "persisted" : false
  }
}

About

An MQTT proxy server that can run on the cloud and edge

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages