Android客户消费ActiveMQ消息以及消息持久化
16lz
2021-12-17
最近项目中遇到一个问题,就是用android消费ActiveMQ中的消息,并且对还没有被消费的消息持久化,等到Android客户端再次连接的时候,可订阅到还未处理的消息,在处理这个问题的时候我遇到了一些麻烦。
问题一
遇到的第一个麻烦是Android客户端不可以直接使用ActiveMQ的原生客户端来从ActiveMQ中订阅消息。
其原因是,android的sdk中不支持j2ee相关jar包和绝大多数的javax.*包的东西类库。
我也脑袋热过,直接将jdk的rt.jar搞到安卓项目里,但是最后报出错误信息,证明这样子做是很蠢的-_-!。
那么不能直接在Android上是使用ActiveMQ的原生客户端来发布订阅消息,就一点办法都没有了吗?答案肯定是不是这样子的,ActiveMQ的发布订阅模式支持MQTT协议,所以可以改用MQTT在ActiveMQ中发布订阅消息,想了解MQTT协议是啥,就自己点进去看看,这里就不多介绍了。
问题二
MQTT的协议的消息持久化,只是支持持久化最后一条未被消费的消息,但是这样和我的需求又不相符合。
我的解决方法:
将ActiveMQ的jms消息转发到MQTT的主题上,android终端订阅MQTT消息主题,把消息持久化放到ActiveMQ的jms主题中,我做了一个适配来解决这个问题。
适配逻辑图:
ActiveMQ适配器代码实现地以及android-sdk: 代码地址
ActiveMQ适配器android例子: 代码地址
更多相关文章
- Android(安卓)4.0 触摸屏消息(二大写的二)
- Android线程模型解析(包括UI的更新)
- Android中AsyncTask(异步任务)和Handler(线程消息机制)的详解
- Android应用程序线程消息循环模型分析
- Handler完全重新理解
- Android线程模型
- 解析Android的 消息传递机制Handler
- 基于android的智能家居之一MJPGstream
- Android底部弹出iOS7风格对话选项框