licai28 / Apollo-mqtt

Apache apollo, mqtt, iOS, Obeject-C

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

MQTT开发记录

作者: 雷巧勋

前言

每一次学习都应该有所收获,为了方便以后回顾,避免重复造轮记录下学习中摸索的过程是很有必要的。为了研究MQTT该次选择了Apache-Apollo提供的broker来进行研究,其次该网站也可以了解mqtt相关的一些特点。详情

目录

JAVA_HOME配置

一般开发电脑可能都有java环境,万一没有就安转一下。

  1. 查看java版本 ,没有下载 //在终端输入下面命令来查看是否有java环境有则显示版本,没有弹出提示框,点详情下载安转即可 java -version 下载安装成功后再次输入,结果如下:

     //视下载jdk版本有所不同
     java version "1.8.0_131"
     Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
     Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
    
  2. 查看JAVA_HOME

     cd $JAVA_HOME
     //结果
     macbook:Home pro$ 
    
  3. 如果第2步失败, 参考苹果官方说明:Important Java Directories on Mac OS X

     ls -l /usr/libexec/java_home
     //result:
     lrwxr-xr-x  1 root  wheel  79  1 11 21:16 /usr/libexec/java_home -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home	
    

事实上这并没有定位到真实路径(原因:Mac OSX 10.9以后系统就自带了Java 6的环境,路径在:/Library/Java/JavaVirtualMachines文件夹下)

	$cd /Library/Java/JavaVirtualMachines
	$ls
	//result:
	jdk1.8.0_131.jdk//(终于找到我们安转的jdk了)
	
	$/usr/libexec/java_home
	//result:这次就是真实路径
	/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home
	
	$/usr/libexec/java_home -V 
	//result:全部版本JAVA_HOME
	Matching Java Virtual Machines (1):
	1.8.0_131, x86_64:	"Java SE 8"	/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home

	/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home
  1. 如果2成功找到路径可忽略,否则就需要设置JAVA_HOME了

     //跳转到根目录显示查看所有.a配置文件
     cd
     ls -a
     
     添加java_home到.bash_profile文件中
     $ touch .bash_profile  创建一个配置文件(如果存在就打开)
    
     $ vi .bash_profile  使用vim编辑器编辑 .bash_profile文件
     
     //添加下面代码
     export JAVA_HOME=$(/usr/libexec/java_home)
     export PATH=$JAVA_HOME/bin:$PATH
     export CLASS_PATH=$JAVA_HOME/lib
     
     添加完后点按esc(确认输入无效)后输入“:wq”(没引号)
     //是配置生效
     $source .bash_profile 
    

(PS:Mac OSX 10.5之后苹果就建议设置$JAVA_HOME变量到/usr/libexec/java_home)

再次执行2成功则说明:我们就已经配置好了全局的java的path和classpath环境变量

PS:卸载旧版本

	rm -rf jdk1.8.0_06.jdk

搭建Baoker

鉴于Apache-apollo较之Mosquitto而言比较方便与直观,该次broker决定用Apache-apollo来作为Mqtt的broker;

PS:该文这针对Mac其他系统请去官方详细了解

下载Apollo

  1. 此处由于之针对自己macbook而言选择OS X版本下载

  2. 将下载好的文件解压到适当的目录(最好单独新建一个方便后续整理)。解压后会apache-apollo-xxx文件夹,该文件夹默认为环境变量${APOLLO_HOME};

  3. 接下来创建broker,有两种方式

     cd 放置broker路径(建议就放在2创建的文件夹中方便以后查看或整理)
     方法一:通过环境变量 (相对路径)创建
     ${APOLLO_HOME}/bin/apollo create MyBroker
     //上面是通过环境变量直接创建,如果失败说明之前操作有些问题导致环境变量配置失败。
     方法二:将apollo拖入终端用绝对地址 创建
     xxx/bin/apollo create MyBroker #在当前目录下生成一个mqtt_test目录,其下面包含:
     
     *****运行结果*******
     Creating apollo instance at: MyBroker
     Generating ssl keystore...
    
     You can now start the broker by executing:  
      "/Users/lqx/Desktop/未命名文件夹/MyBroker/bin/apollo-broker" run
    
     Or you can run the broker in the background using:
      "/Users/lqx/Desktop/未命名文件夹/MyBroker/bin/apollo-broker-service" start
    

    PS:此处需要java环境,参考上文JAVA_HOME配置

    成功后文件目录大致应该是这个样子:

    bin 运行脚本

    etc 环境配置

    data 存储持久化数据

    log 运行日志

    tmp 临时文件

  4. 接下来运行我们的broker

    cd MyBroker(3创建的文件夹)
    apollo-broker run
    

apollo运行结果

  1. 由于apollo提供了可视化web界面(这也就是我选择他的原因),我们在safari中输入 http://127.0.0.1:61680/(http访问) 或者 https://127.0.0.1:61681/(https访问,可用于研究mqtt+ssl)输入用户名密码即可登录(默认用户名:admin 密码:password)

至此属于我们自己的Broker就算搭建完成了

体验Mqtt

再一次进入初始解压目录中,打开/examples 其中有一些简单客户端。我们打开其中的mqtt/websocket/index.html即可 点击 connect 后回到broker的可视化观测界面我们就能够看到我们刚刚建立的链接,以及发布的主题(Topic)

进一步开发看你想用哪一种语言咯,mqtt个人感觉在弱网络环境下进行实时通讯是一个绝佳选择(例如被用于智能家居上)

demo简介

demo是之前随意写来研究MQTT各个特性的,所以有些粗糙,但用于了解和体验MQTT还是可以的,其中证书无法通用便删掉了同时也注释了ssl部分。

demo

"ios" = 订阅Topic

“fkl” = 发布topic

下载后如果需要真机运行,请现更改 LoginVC与ChartVC 文件中 的 HOST 值

PS: MyBroker文件夹放置的broker应该无效,请删除后重新生成

		cd broker
		apache-apollo-1.7.1/bin/apollo create MyBroker

About

Apache apollo, mqtt, iOS, Obeject-C


Languages

Language:Objective-C 53.5%Language:C 14.5%Language:HTML 14.3%Language:Java 6.1%Language:JavaScript 5.6%Language:Shell 1.4%Language:Python 1.0%Language:C# 1.0%Language:CSS 0.8%Language:C++ 0.6%Language:Ruby 0.5%Language:Perl 0.3%Language:PHP 0.3%Language:Batchfile 0.2%