前写日子给朋友做了一个商超管理的app开发项目,后台说项目里用到一个技术,"消息中间件",后来网上查了一下,大体了解了一下,朋友后台是用activeMQ,我也了解一下这个产品,大体了解了其中原理,具体原理不详细讲解,自行百度。
android端如果要使用消息中间件,原理就是发布和订阅,使用mqtt协议,以AS为例子
第一步:需要引用库
public String doPublish(String tcp, String topic1, String message1) throws MqttException {
//获取前台传过来的两个参数
TOPIC = topic1;
MESSAGE = message1;
//new mqttClient //MemoryPersistence设置clientid的保存形式,默认为以内存保存
client = new MqttClient(tcp, clientid, new MemoryPersistence());
//与activeMQ连接的方法
connect();
//new mqttMessage
message = new MqttMessage(); /
/设置服务质量 只发送1次
message.setQos(2);
//设置是否在服务器中保存消息体
message.setRetained(true);
//设置消息的内容
message.setPayload(MESSAGE.getBytes());
//发布
publish(topic, message);
return "result";
}
private void connect() {
// new mqttConnection 用来设置一些连接的属性
MqttConnectOptions options = new MqttConnectOptions();
// 设置是否清空session,这里如果设置为false表示服务器会保留客户端的连接记录,这里设置为true表示每次连接到服务器都以新的身份连接 // 换而言之,设置为false时可以客户端可以接受离线消息
options.setCleanSession(false);
// 设置连接的用户名和密码
options.setUserName(userName);
options.setPassword(passWord.toCharArray());
// 设置超时时间
options.setConnectionTimeout(10);
// 设置会话心跳时间
options.setKeepAliveInterval(20);
try {
// 设置回调类
client.setCallback(new PushCallback());
// 连接
client.connect(options);
// 获取activeMQ上名为TOPIC的topic
topic = client.getTopic(TOPIC);
} catch (Exception e) {
e.printStackTrace();
}}
public void connectionLost(Throwable cause) {
// 连接丢失后,一般在这里面进行重连