赞
踩
将下载下来的压缩包emqx-5.0.9-windows-amd64.tar.gz进行解压,以解压到D:\emqx-5.0.9-windows-amd64为例
如果想确定是否启动成功,也可以通过.\bin\emqx ping进行测试,如果显示下面图中内容,那就说明确实是启动成功啦,不要怀疑!
开发模式下可以使用 console 命令在控制台启动 EMQX,该模式可以实时查看 EMQX 启动和运行输出日志信息:./bin/emqx console。
登录后界面如下:
如果觉得右侧图标看起来不方便,可以点击最下面的切换按钮,展示实际的菜单名称,如下图:
可以通过Connections进行当前连接的客户端查看,如下图
如果觉得英文看的不舒服,可以修改显示的语言,步骤如下:
其他功能页签不做具体介绍,可以去官网自己学习,再次附使用说明的官网地址https://www.emqx.io/docs/zh/v5.0/#产品优势。
完成以上步骤,则一个完整的本地EMQX就可以使用啦!
前端代码比较简单,这里就不做分享啦,仅简单介绍下服务器的连接,主题发布,消息发送,订阅主题,获取发布者的消息等。
2.1 服务器连接与断开
private async void btnConnect_Click(object sender, RoutedEventArgs e) { PublisherClient = mqttFactory.CreateMqttClient() as MqttClient; var mqttClientOptions = new MqttClientOptionsBuilder().WithTcpServer(this.txtServiceAddress.Text.Trim(),Convert.ToInt32(this.txtServicePort.Text.Trim())).Build(); mqttClientOptions.ClientId = "HITE_publisher"; mqttClientOptions.Credentials = new MqttClientCredentials("admin", Encoding.ASCII.GetBytes("wang12520")); mqttClientOptions.CleanSession = true; //保持期 mqttClientOptions.KeepAlivePeriod = TimeSpan.FromSeconds(10000.5); try { await PublisherClient.ConnectAsync(mqttClientOptions, CancellationToken.None); this.InfoList.Items.Insert(0, $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}:与服务器建立连接成功"); } catch(Exception ex) { this.InfoList.Items.Insert(0, $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}:与服务器建立连接失败,失败原因:{ex.Message}"); } }
private void btnDisConnect_Click(object sender, RoutedEventArgs e)
{
try
{
PublisherClient.DisconnectAsync();
this.InfoList.Items.Insert(0, $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}:与服务器断开连接成功");
}
catch (Exception ex)
{
this.InfoList.Items.Insert(0, $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}:与服务器断开连接失败,失败原因:{ex.Message}");
}
}
2.2 主题发布
private async void btnPublish_Click(object sender, RoutedEventArgs e) { var applicationMessage = new MqttApplicationMessageBuilder() .WithTopic(this.txtToptcName.Text.Trim()) .WithPayload(this.txtToptcInfo.Text.Trim()) .Build(); try { await PublisherClient.PublishAsync(applicationMessage); this.InfoList.Items.Insert(0, $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}:发布主题{applicationMessage.Topic}成功"); } catch (Exception ex) { this.InfoList.Items.Insert(0, $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}:发布主题{applicationMessage.Topic}失败,失败原因:{ex.Message}"); } }
2.3 消息发送
private async void btnSendInfo_Click(object sender, RoutedEventArgs e)
{
try
{
await PublisherClient.PublishStringAsync(this.txtToptcName.Text.Trim(), this.txtSendInfo.Text);
this.InfoList.Items.Insert(0, $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}:主题{this.txtToptcName.Text.Trim()}发布消息“{this.txtSendInfo.Text}”成功");
}
catch(Exception ex)
{
this.InfoList.Items.Insert(0, $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}:主题{this.txtToptcName.Text.Trim()}发布消息“{this.txtSendInfo.Text}”失败,失败原因:{ex.Message}");
}
}
2.4 主题订阅
private async void btnSubscriber_Click(object sender, RoutedEventArgs e) { try { SubscriberClient = mqttFactory.CreateMqttClient() as MqttClient; var mqttClientOptions = new MqttClientOptionsBuilder().WithTcpServer("127.0.0.1", 1883).Build(); SubscriberClient.ApplicationMessageReceivedAsync += e => { Application.Current.Dispatcher.Invoke(() => { this.InfoList.Items.Insert(0, $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}:收到主题“{this.txtToptcName.Text.Trim()}”的消息“{UTF8Encoding.UTF8.GetString(e.ApplicationMessage.Payload)}”"); }); return Task.CompletedTask; }; await SubscriberClient.ConnectAsync(mqttClientOptions, CancellationToken.None); var mqttSubscribeOptions = mqttFactory.CreateSubscribeOptionsBuilder() .WithTopicFilter( f => { f.WithTopic(this.txtToptcName.Text.Trim()); }) .Build(); await SubscriberClient.SubscribeAsync(mqttSubscribeOptions, CancellationToken.None); this.InfoList.Items.Insert(0, $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}:订阅主题{this.txtToptcName.Text.Trim()}成功"); } catch (Exception ex) { this.InfoList.Items.Insert(0, $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}:订阅主题{this.txtToptcName.Text.Trim()}失败,失败原因:{ex.Message}"); } }
以上就是全部的代码,EMQX在windows基础使用篇,仅供初学者参考,大佬可绕,如果需要完整代码可以,可以留下邮箱,看到后我会发给你的。后续会将EMQX部署到linux进行记录。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。