docker安装部署emqx以及mqtt(emqx)Java代码连接客户端案例,mqtt安装部署

docker安装部署emqx以及mqtt(emqx)Java代码连接客户端案例

  1. docker命令直接拉取镜像
docker pull emqx/emqx:5.3.0

2.运行以下命令启动 Docker 容器

docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:5.3.0

3.创建挂载目录(需要持久化数据)

mkdir -p /home/admin/emqx

4.复制容器文件到挂载目录

docker cp emqx:/opt/emqx/bin /home/admin/emqx
docker cp emqx:/opt/emqx/etc /home/admin/emqx
docker cp emqx:/opt/emqx/lib /home/admin/emqx
docker cp emqx:/opt/emqx/data /home/admin/emqx
docker cp emqx:/opt/emqx/log /home/admin/emqx

5.修改权限

chown -R 1000:1000 /home/admin/emqx/
chmod -R 777 /home/admin/emqx/

6.删除掉之前运行的emqx容器

docker rm -f emqx

7.重新运行

docker run  -itd -u root --restart=always \
--name emqx -p 18083:18083 -p 1883:1883 -p 8084:8084 -p 8883:8883 -p 8083:8083 \
-v /home/admin/emqx/bin:/opt/emqx/bin \
-v /home/admin/emqx/etc:/opt/emqx/etc \
-v /home/admin/emqx/lib:/opt/emqx/lib \
-v /home/admin/emqx/data:/opt/emqx/data \
-v /home/admin/emqx/log:/opt/emqx/log \
-e EMQX_NODE_NAME=emqx@node \
emqx/emqx:5.3.0

8.直接浏览器输入服务地址http://xxx:18083/
默认账户密码admin/public

9.emqx客户端连接java代码案例
maven依赖

        <!-- https://mvnrepository.com/artifact/org.eclipse.paho/org.eclipse.paho.client.mqttv3 -->
        <dependency>
            <groupId>org.eclipse.paho</groupId>
            <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
            <version>1.2.5</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.bouncycastle/bcpkix-jdk15on -->
        <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcpkix-jdk15on</artifactId>
            <version>1.70</version>
        </dependency>

创建 MQTT 连接
本文将使用 EMQX 提供的 免费公共 MQTT 服务器,该服务基于 EMQX 的 MQTT 云平台 创建。服务器接入信息如下:

Broker: broker.emqx.io(中国用户可以使用 broker-cn.emqx.io)
TCP Port: 1883
SSL/TLS Port: 888
普通 TCP 连接
设置 MQTT Broker 基本连接参数,用户名、密码为非必选参数。

String broker = "tcp://broker.emqx.io:1883";
// TLS/SSL
// String broker = "ssl://broker.emqx.io:8883";
String username = "emqx";
String password = "public";
String clientid = "publish_client";

然后创建 MQTT 客户端并连接。

MqttClient client = new MqttClient(broker, clientid, new MemoryPersistence());
MqttConnectOptions options = new MqttConnectOptions();
options.setUserName(username);
options.setPassword(password.toCharArray());
client.connect(options);

参数说明:

MqttClient: 同步调用客户端,使用阻塞方法通信。
MqttClientPersistence: 代表一个持久的数据存储,用于在传输过程中存储出站和入站的信息,使其能够传递到指定的 QoS。
MqttConnectOptions: 连接选项,用于指定连接的参数,下面列举一些常见的方法。
setUserName: 设置用户名
setPassword: 设置密码
setCleanSession: 设置是否清除会话
setKeepAliveInterval: 设置心跳间隔
setConnectionTimeout: 设置连接超时时间
setAutomaticReconnect: 设置是否自动重连
qos:

  • 0-表示消息最多只能传递一次(零次或一次)。消息不会持久化到磁盘,也不会在网络上得到确认。此QoS是最快的,但只应用于没有价值的消息-请注意,如果服务器无法处理消息(例如,存在授权问题),则会进行MqttCallback。交付完成(IMqttDeliveryToken)。也被称为“火和遗忘”。
  • 1-表示消息应至少传递一次(一次或多次)。只有当消息可以持久化时,才能安全地传递消息,因此应用程序必须使用MqttConnectOptions提供持久化方法。如果未指定持久性机制,则在客户端发生故障时将不会传递消息。该消息将在网络上得到确认。这是默认的QoS。

2-表示消息应传递一次。该消息将被持久化到磁盘,并将在整个网络中进行两阶段确认。只有能够持久化,该消息才能安全传递,因此应用程序必须使用MqttConnectOptions提供持久化方法。如果未指定持久性机制,则在客户端发生故障时将不会传递消息。

完整代码

package io.emqx.mqtt;

import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;


public class MqttSample {
    public static void main(String[] args) {
        String topic = "test/topic";
        String content = "Hello World";
        int qos = 2;
        String broker = "tcp://broker.emqx.io:1883";
        String clientId = MqttClient.generateClientId();
        MemoryPersistence persistence = new MemoryPersistence();
        MqttConnectOptions connOpts = new MqttConnectOptions();
        connOpts.setUserName("emqx_user");
        connOpts.setPassword("emqx_password".toCharArray());
        try {
            MqttClient client = new MqttClient(broker, clientId, persistence);
            client.setCallback(new SampleCallback());
            System.out.println("Connecting to broker: " + broker);
            client.connect(connOpts);
            System.out.println("Connected to broker: " + broker);
            client.subscribe(topic, qos);
            System.out.println("Subscribed to topic: " + topic);
            MqttMessage message = new MqttMessage(content.getBytes());
            message.setQos(qos);
            client.publish(topic, message);
            System.out.println("Message published");
            client.disconnect();
            System.out.println("Disconnected");
            client.close();
            System.exit(0);
        } catch (MqttException me) {
            me.printStackTrace();
        }
    }

}

执行结果
在这里插入图片描述

### 回答1: EMQ X是一个高度可伸缩、分布式的开源 MQTT 消息代理软件,可用于物联网、实时数据传输和大规模消息传递等场景。在Java中使用EMQ X可以使用EMQ X Java SDK来实现MQTT通信。 以下是在Java中搭建EMQ X的步骤: 1. 下载并安装EMQ X Broker:从EMQ X官网 https://www.emqx.com/zh/downloads 下载适合自己操作系统的EMQ X Broker,并按照官方文档进行安装和配置。 2. 引入EMQ X Java SDK:在Java项目中引入EMQ X Java SDK,可以使用Maven或Gradle等构建工具,也可以手动下载并引入jar包。 3. 连接EMQ X Broker:使用EMQ X Java SDK提供的MqttClient类来连接EMQ X Broker,示例代码如下: ```java import org.eclipse.paho.client.mqttv3.MqttClient; import org.eclipse.paho.client.mqttv3.MqttException; import org.eclipse.paho.client.mqttv3.MqttMessage; public class MqttTest { public static void main(String[] args) { String broker = "tcp://localhost:1883"; String clientId = "JavaTest"; try { MqttClient mqttClient = new MqttClient(broker, clientId); mqttClient.connect(); MqttMessage message = new MqttMessage(); message.setPayload("Hello World from Java!".getBytes()); mqttClient.publish("test/topic", message); mqttClient.disconnect(); } catch (MqttException e) { e.printStackTrace(); } } } ``` 以上代码实现了连接EMQ X Broker,向名为“test/topic”的MQTT主题发布一条消息,并断开连接的功能。 4. 使用EMQ X:通过EMQ X Java SDK提供的API,可以在Java项目中使用EMQ X的相关功能,例如订阅主题、发布消息等。 希望这些步骤能够帮助你在Java中搭建EMQ X。 ### 回答2: Java EMQX 是一个开源的,基于Java语言编写的MQTT消息服务器,用于构建可扩展的物联网应用和实时通信系统。下面是Java EMQX搭建的过程。 第一步是从EMQX官方网站上下载Java EMQX服务器的安装包。根据你的操作系统选择合适的版本。 第二步是解压安装包,然后进入解压后的文件夹。在文件夹中找到启动脚本,运行该脚本以启动EMQX服务器。 第三步是配置EMQX服务器。在服务器启动后,你可以在浏览器中访问EMQX的管理控制台。通过访问控制台,你可以进行一系列配置,如创建用户、设置订阅规则等。 第四步是创建Java应用程序来连接EMQX服务器。你可以使用JavaMQTT客户端库,如 Eclipse Paho,来创建一个简单的Java程序来连接EMQX服务器并发布订阅消息。 在Java程序中,你需要使用EMQX服务器的IP地址和端口号来建立连接。然后,你可以使用相关方法来发布消息到指定的主题或订阅特定的主题来接收消息。 最后,你可以运行你的Java程序,如果一切正常,它将能够连接EMQX服务器并进行消息的发布和订阅。 总结来说,要搭建Java EMQX服务器,你需要下载和安装Java EMQX服务器的安装包,配置服务器,创建Java应用程序连接到服务器并发布和订阅消息。这样就可以搭建好一个基于JavaEMQX服务器。 ### 回答3: Java是一种面向对象的编程语言,而EMQX是一种开源的MQTT消息代理服务器。在搭建Java EMQX时,可以按照以下步骤进行操作: 步骤1:首先需要确保系统中已经安装Java运行环境(JRE)和Maven构建工具。可以通过命令行输入java -version和mvn -version来查看是否已经安装成功。 步骤2:从EMQX官方网站下载最新版本的EMQX服务器软件包,并解压到指定的目录中。 步骤3:编辑EMQX的配置文件,可以通过修改emqx.conf文件来设置服务器的参数。在该文件中,可以配置服务器的监听端口、访问控制列表、认证方式等。 步骤4:配置EMQX的数据库存储方式,可以选择使用MySQL、PostgreSQL等数据库进行消息数据的存储。通过修改emqx.conf文件中的数据库配置项,指定数据库的连接地址、用户名、密码等信息。 步骤5:为了能够在Java中使用EMQX的功能,需要使用Maven引入相应的EMQX客户端库。在项目的pom.xml文件中,添加emqx-mqtt-client的依赖项,并执行mvn install命令下载所需的依赖项。 步骤6:在Java代码中使用EMQX的功能。可以使用EMQXJava客户端库,通过指定EMQX服务器的IP地址和端口号,实现与EMQX服务器之间的连接。可以通过订阅相关主题或发布消息,与EMQX服务器进行数据传输。 步骤7:运行Java程序,验证整个搭建过程是否成功。可以通过控制台输出或日志文件来查看相关的执行结果和错误信息。 总结起来,搭建Java EMQX主要包括下载安装EMQX服务器软件、编辑配置文件、配置数据库存储、引入EMQX客户端库、编写Java代码等步骤。通过这些步骤,可以实现使用JavaEMQX服务器进行消息传输和处理的功能。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞机飞上天空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值