Android客户消费ActiveMQ消息以及消息持久化

最近项目中遇到一个问题,就是用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主题中,我做了一个适配来解决这个问题。
适配逻辑图:

Android客户消费ActiveMQ消息以及消息持久化_第1张图片
实现逻辑图

ActiveMQ适配器代码实现地以及android-sdk: 代码地址
ActiveMQ适配器android例子: 代码地址

你可能感兴趣的:(Android客户消费ActiveMQ消息以及消息持久化)