最近项目中遇到一个问题,就是用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例子: 代码地址

更多相关文章

  1. Android(安卓)4.0 触摸屏消息(二大写的二)
  2. Android线程模型解析(包括UI的更新)
  3. Android中AsyncTask(异步任务)和Handler(线程消息机制)的详解
  4. Android应用程序线程消息循环模型分析
  5. Handler完全重新理解
  6. Android线程模型
  7. 解析Android的 消息传递机制Handler
  8. 基于android的智能家居之一MJPGstream
  9. Android底部弹出iOS7风格对话选项框

随机推荐

  1. 开篇--基于Android的小巫新闻客户端开发
  2. 还原Android(安卓)PDU彩信
  3. 如何检索Android设备的唯一ID
  4. Android图形显示系统——概述
  5. android 触摸(Touch)事件、点击(Click)事
  6. Android之ListView详解
  7. Android的多语言实现
  8. 【Android车载系统 News | Tech 2】News
  9. 个人开发者如何通过Android应用赚外快[推
  10. 关于使用Android(安卓)NDK编译ffmpeg