架构师_程序员

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 19924|回复: 132
打印 上一主题 下一主题

[资料] c# M2Mqtt连接Apollo MQTT服务器[附源码]

  [复制链接]
跳转到指定楼层
楼主
发表于 2017-1-4 15:02:41 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

分享一款mqtt测试工具
http://www.itsvse.com/thread-3905-1-1.html
(出处: 架构师)
.net/c# activemq操作示例[源码]
http://www.itsvse.com/thread-3907-1-1.html
(出处: 架构师)
关于activemq和rabbitmq资料汇总
http://www.itsvse.com/thread-4659-1-1.html
(出处: 架构师_程序员)


先附上网上的代码:

建立客户端连接并订阅

  1. //创建客户端实例
  2. MqttClient client = new MqttClient(IPAddress.Parse(MQTT_BROKER_ADDRESS)); //主机为IP时
  3. MqttClient client = new MqttClient(MQTT_BROKER_ADDRESS); //当主机地址为域名时

  4. // 注册消息接收处理事件,还可以注册消息订阅成功、取消订阅成功、与服务器断开等事件处理函数
  5. client.MqttMsgPublishReceived += client_MqttMsgPublishReceived;

  6. //生成客户端ID并连接服务器
  7. string clientId = Guid.NewGuid().ToString();
  8. client.Connect(clientId);

  9. // 订阅主题"/home/temperature" 消息质量为 2
  10. client.Subscribe(new string[] { "/home/temperature" }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE });

  11. ...

  12. void client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e)
  13. {
  14. //处理接收到的消息
  15. string msg = System.Text.Encoding.Default.GetString(e.Message);
  16.         textBox1.AppendText("收到消息:" + msg + "\r\n");
  17. }
复制代码
发布消息

  1. // 发布消息到主题 "/home/temperature" 消息质量为 2,不保留
  2. client.Publish("/home/temperature", Encoding.UTF8.GetBytes("hello"), MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE, false);
复制代码


网上的代码,应该连接mosquito mqtt服务器是对的,但是,连接Apollo MQTT服务器就需要改一些代码了。

然后,自己参考了许多文章,自己才写出来。

源码下载:

游客,如果您要查看本帖隐藏内容请回复


评分

参与人数 1MB +1 收起 理由
lxc1118 + 1 很给力!

查看全部评分





上一篇:微信公众号开发之VS远程调试
下一篇:SQL Server 跨服务器同步或定时同步数据库
帖子永久地址: 

架构师_程序员 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与架构师_程序员享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和架构师_程序员的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、架构师_程序员管理员和版主有权不事先通知发贴者而删除本文

码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
推荐
 楼主| 发表于 2017-1-4 15:04:40 | 只看该作者
Apache Apollo是一个代理服务器,主要用于消息的请求转发,下面是其常用的一些配置文件的介绍
一、users.properties:
用来配置可以使用服务器的用户以及相应的密码。
其在文件中的存储方式是:用户名=密码,如:
lily=123456
表示新增一个用户,用户名是:lily,密码是:123456
二、groups.properties:
持有群体的用户映射,可以通过组而不是单个用户简化访问控制列表。
可以为一个定义的组设置多个用户,用户之间用“|”隔开,如:
admins=admin|lily
表示admins组中有admin和lily两个用户
三、black-list.txt:
用来存放不允许连接服务器的IP地址,相当于黑名单类似的东西。
例如:
10.20.9.147
表示上面IP不能够连接到服务器。
四、login.config:
是一个服务器认证的配置文件,为了安全apollo1.6版本提供了认证功能,只有相应的用户名和正确的密码才能够连接
服务器。
五、服务器主配置文件apollo.xml:
该配置文件用于控制打开的端口,队列,安全,虚拟主机设置等。
       1、认证:可以使用<authenticationdomain="internal" />来配置是否需要连接认证,如果将其属性enable设置为false表示不用认证,任何人都可以连接服务器,默认为true
       2、access_rule:可以在broker或者virtual_host中用于定义用户对服务器资源的各种行为。如:
<access_rule allow="users" action="connect create destroy send receive consume"/>表示群组users里面的用户可以对服务器资源进行的操作有:connect 、create、 destroy、 send 、receive 、consume。详细的操作说明见:
http://activemq.apache.org/apollo/documentation/user-manual.html
       3、message stores:默认情况下apollo使用的是LevelDB store,但是推荐使用BDB store(跨平台的)只能够实用其中一种。使用LevelDB store的配置是:<leveldb_store directory="${apollo.base}/data"/>默认有提供不用任何修改。使用BDB store需要到网站下jar包支持http://download.Oracle.com/maven/com/sleepycat/je/5.0.34/je-5.0.34.jar,将jar包放在服务器的lib目录下面,然后将配置文件改成:<bdb_store directory="${apollo.base}/data"/>即可。
       4、connector:用于配置服务器支持的链接协议以及相应的端口。如:
<connector id="tcp" bind="tcp://0.0.0.0:61613" connection_limit="2000" protocol="mqtt"/>表示支持tcp链接,使用的端口是61613,链接限制是2000,自动侦听的协议是mqtt协议
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
推荐
发表于 2018-9-5 10:58:40 | 只看该作者

@小渣渣  打扰了,想询问下,ssl/tls链接的问题。由于使用m2mqtt,在.net上编写客户端,使用的是.crt证书,  apollo是Java架构的,使用的证书是keystore封装的。故我自己生成了根证书和服务器证书,并将服务器证书打包成keystore,替换apollo中原本的keystore。先使用paho测试,将秘钥库和信任库都设置为我生成的keystore进行ssl安全通信,成功链接。然后 用c#编程, 想实现单向验证,将ssl    secure设为true,将根证书载入,客户端证书设为空,链接失败。然后发现单向认证好像需要设置client_auth属性。但是在设置该属性(即使设置为默认属性即client_auth=none)后,原本用paho测试端使用keystore可以链接到Apollo的,也不能了。不知道您对此有了解吗?感谢大佬
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
推荐
发表于 2018-9-5 10:34:37 | 只看该作者
打扰了,看到您发表过关于M2mqtt库链接Apollo代理服务的帖子,想询问下,在客户端使用.crt证书,在Apollo上使用keystore进行ssl安全通信,想实现单向验证,好像需要设置client_auth属性。但是在设置该属性(即使设置为默认属性即client——auth=none)后,原本用paho测试端使用keystore可以链接到Apollo的,也不能了。不知道您对此有了解吗?感谢大佬
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
板凳
发表于 2017-5-2 09:37:33 | 只看该作者
asdasef想到法官腐败

评分

参与人数 1MB -1 贡献 -1 收起 理由
北城织温22度 -1 -1 请勿灌水,提高回帖资料是每位会员应尽的义.

查看全部评分

码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
地板
发表于 2017-5-3 10:30:56 | 只看该作者
学习一下,正在使用MQTT中,需要更换Apollo
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
5#
 楼主| 发表于 2017-5-3 10:31:59 | 只看该作者
zjpzjp 发表于 2017-5-3 10:30
学习一下,正在使用MQTT中,需要更换Apollo

Apollo  有缺陷
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
6#
发表于 2017-5-24 10:43:39 | 只看该作者
正在找相关资源,MARK
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
7#
发表于 2017-5-29 13:48:05 | 只看该作者
挺好的,是我想要的内容
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
8#
发表于 2017-6-7 10:15:28 | 只看该作者
正在学习,感谢分享
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
9#
发表于 2017-6-21 12:37:04 | 只看该作者
MQTT学习一下。。。。。
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
10#
发表于 2017-6-27 19:50:07 | 只看该作者
我也遇到这个问题,谢谢楼主分享
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。

Mail To:help@itsvse.com

QQ|Archiver|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2018-9-25 15:34

Powered by Discuz! X3.4

© 2001-2014 Comsenz Inc.

快速回复 返回顶部 返回列表