服务端配置相关
一、 关于activimq指定特定的jdk路径
activimq服务端bin目录下面activimq.bat文件里面,修改如下代码:
:checkJava
set _JAVACMD=%JAVACMD%
set %JAVA_HOME%=D:\Java\jre1.8.0_20 //这里就是我们可以自己指定的关于自己需要的jdk版本
if "%JAVA_HOME%" == "" goto noJavaHome
if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome
if "%_JAVACMD%" == "" set _JAVACMD=%JAVA_HOME%\bin\java.exe
goto runAnt
二、Java 密码扩展无限制权限策略文件
问题:因为某些国家的进口管制限制,Java发布的运行环境包中的加解密有一定的限制。比如默认不允许256位密钥的AES加解密,解决方法就是修改策略文件。
官方网站提供了JCE无限制权限策略文件的下载:
JDK6的下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
JDK7的下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
JDK8的下载地址:
http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
解决办法:
去除该限制只需下载 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files,
覆盖上述目录下的对应jar文件(local_policy.jar, US_export_policy.jar)即可。
三、 使用mqtt协议通讯的时候,需要注意broker地址写法
使用服务端activimq配置文件里面 mqtt协议端口 但是客户端写前缀写 tcp的 比如 tcp://139.224.234.222:61613
四、 如果activimq服务端出现 Stealing connect的问题
出现原因:有两个或者更多连接同一个id,默认是false不允许出现这种情况, 所以需要配置allowLinkStealing属性值为true
具体配置样例和具体更多属性参数设置值,可以参考如下网址 http://activemq.apache.org/configuring-transports.html
五、 如果需要添加修改activimq服务端的消息分发策略,需要做如下设置
- 下载activimq的源码,在activimq-broker模块下面去到policy包下添加一个类,比如ClientIdFilterDispatchPolicy这个类继承一个SimpleDispatchPolicy类,重写里面的dispatch方法,这个里面就可以对消息进行分发控制,获取消息内容,推送某些消息都行
- cmd去到源码目录下 需要对使用mvn package -Dmaven.test.skip=true进行打包,打的包会生成在对应的模块的target目录下
- 复制activimq-broker.jar 和activimq-spring.jar到服务端lib目录进行替换
- 在conf目录下面打开activimq配置文件,在
<policyEntry topic=">" > //这里设置过滤的topic 默认是全部,如果改成topic="chat.>"就是指过滤以chat.开头的
<!-- The constantPendingMessageLimitStrategy is used to prevent
slow topic consumers to block producers and affect other consumers
by limiting the number of messages that are retained
For more information, see:
http://activemq.apache.org/slow-consumer-handling.html
-->
//这里就是增加自己新定义的分发器 --开始--
<dispatchPolicy>
<clientIdFilterDispatchPolicy/>
</dispatchPolicy>
//--结束--
<pendingMessageLimitStrategy>
<constantPendingMessageLimitStrategy limit="1000"/>
</pendingMessageLimitStrategy>
</policyEntry>
六、 水务云app 修改新增类
1、activemq新增(修改文件)路径
1. activemq-activemq-5.14.5\activemq-broker\src\main\java\org\apache\activemq\broker\region\policy\ClientIdFilterDispatchPolicy.java
2. activemq-activemq-5.14.5\activemq-broker\src\main\java\org\apache\activemq\broker\region\policy\model
3. activemq-activemq-5.14.5\activemq-broker\src\main\java\org\apache\activemq\broker\region\policy\apns4j
2、新增类
七、推送配置文件
iOS推送配置文件apns.ini 对应的推送证书放在activemq的conf文件夹下。
app手机端MQTT通讯整理
一、topic设定
1.1个人聊天
个人聊天topic为 chat/(usesid) ,用户订阅自己userid对应的topic。(对应改动:mqtt服务初始化方式,订阅方式)
1.2 群组聊天
群组聊天各组员都需要订阅当前群id对应的topic。 格式为chat/(groupid)。(对应改动:群组订阅的时机,收到群成员消息时候的订阅和取消订阅)
二、账号多地登录
登录成功后需要发送给自己账号id主题发送上线通知,通知其他设备上的该账号,平作下线处理。
消息主体为OnlineNotice#&userid。
三、新建群、邀请新成员、退出群
因建群和邀请新成员需要用户动态的去订阅当前群的topic,所以建群和邀请后需要在对应去订阅(或取消)群的topic。(对应改动界面,新建群界面、邀请界面、查看群信息界面)
四、音视频、图片上传
图片音视频上传都是应该先把文件二进制数据上传至平台平台返回对应的文件路径连接 (api:/app/chat/uploadFile),然后在调用相应的接口文档。