emqx 源码安装

 https://www.emqx.io/downloads?os=CentOS

1)

Download  emqx-5.1.6-el8-amd64.tar.gz   SHA256 

wget https://www.emqx.com/en/downloads/broker/5.1.6/emqx-5.1.6-el8-amd64.tar.gz

2)

Install EMQX

mkdir -p emqx && tar -zxvf emqx-5.1.6-el8-amd64.tar.gz -C emqx

3)

Run EMQX

./emqx/bin/emqx start

转自:

代码部分是大佬写的需要可以参考  点击这里
运行要求

  gcc-c++

  erlang

gcc --version //查看是否安装gcc
出现版本则是已安装,未安装可以参考  Ubuntu系统中gcc安装_ubuntu gcc 12.1-CSDN博客

  安装erlang

erl -version //查看erlang版本没有则说明未安装erlang
sudo apt install erlang  //安装erlang 

  新建EMQTT安装文件夹并下载EMQX安装包(文件夹位置随意,这里是/home/bytedance)

mkdir EMQX   //新建安装文件夹
cd EMQX //进入安装文件夹
wget https://www.emqx.com/en/downloads/broker/5.1.6/emqx-5.1.6-el8-amd64.tar.gz  // 

  启动运行

//下载完成后,在EMQX文件夹下会有一个压缩包
//解压压缩包 tar -xvf 下载的文件名
tar -xvf emqx-5.0.8-el8-amd64.tar.gz
//启动
bin/emqx start
//停止
bin/emqx stop
//查看状态
bin/emqx_ctl status

  控制面板

浏览器输入 127.0.0.1:18083(127.0.0.1是本地的IP,如果是运行在远程服务器需要改成远程服务器的IP)
出现页面说明安装启动成功,默认账户密码在配置文件加下可以看到 
默认账户是admin
默认密码是public

 不喜欢英文界面的可以在设置里修改为中文

 

   关于测试

  安装完成后可以新建个客户端来进行测试

新建Maven工程

POM文件

 <dependencies>
        <dependency>
            <groupId>org.eclipse.paho</groupId>
            <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
            <version>1.2.2</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>2.0.3</version>
        </dependency>

    </dependencies>

Server

import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import java.util.Scanner;
public class Server {
    public static void main(String[] args) throws Exception {
        String host = "tcp://127.0.0.1:1883";
        String topic = "hello";
        String clientId = "server";// clientId不能重复这个是server的id
        //新建mqtt连接
        MqttConnectOptions options = new MqttConnectOptions();
        options.setCleanSession(true);
        //新建mqtt客户端
        MqttClient client = new MqttClient(host, clientId);
        client.connect(options);
        //新建mqtt消息
        MqttMessage message = new MqttMessage();
        @SuppressWarnings("resource")
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要发送的内容:");
        while (true) {
            String MsgMessage= scanner.nextLine();
            message.setPayload(MsgMessage.getBytes());
            client.publish(topic, message);
        }

    }
}

Client

import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;

public class Client {
    public static void main(String[] args) throws Exception {

        String host = "tcp://127.0.0.1:1883";
        String topic = "hello";
        String clientId = "动次打次嘿嘿嘿嘿";// clientId不能重复,这个是client的id
        // 1.设置mqtt连接属性
        MqttConnectOptions options = new MqttConnectOptions();
        options.setCleanSession(true);
        // 2.实例化mqtt客户端
        MqttClient client = new MqttClient(host, clientId);
        // 3.连接
        client.connect(options);
        //这里的setCallback需要新建一个Callback类并实现 MqttCallback 这个类
        client.setCallback(new PushCallback());
        while (true) {
            client.subscribe(topic, 2);
        }
        // client.disconnect();
    }
}

PushCallback

import java.util.Date;

import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class PushCallback implements MqttCallback {
    private final Logger logger = LoggerFactory.getLogger(this.getClass());

    public void connectionLost(Throwable cause) {
        // 连接丢失后进行重连
        System.out.println("连接断开,可以做重连");
        logger.info("掉线时间:{}", new Date());
    }

    public void deliveryComplete(IMqttDeliveryToken token) {
        System.out.println("deliveryComplete---------" + token.isComplete());
    }

    public void messageArrived(String topic, MqttMessage message) throws Exception {
        // subscribe后得到的消息会执行到这里面
        // System.out.println(message);
        System.out.println("接收消息主题 : " + topic);
        System.out.println("接收消息Qos : " + message.getQos());
        System.out.println("接收消息内容 : " + new String(message.getPayload()));
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值