//点击按钮调用resavebutton() 方法,通过控制台发送消息,不能收到,程序也不报错,请大神指导,谢谢
private void resavebutton() {
//
/**
* 设置当前用户私有的MQTT的接入点。例如此处示意使用XXX,实际使用请替换用户自己的接入点。接入点的获取方法是,在控制台申请MQTT实例,每个实例都会分配一个接入点域名。
*/
final String broker ="tcp://mqf-p5o4k36qb8.mqtt.aliyuncs.com:1883";
/**
* 设置阿里云的AccessKey,用于鉴权
*/
final String acessKey ="LTAIEGaxwGajao9g";
/**
* 设置阿里云的SecretKey,用于鉴权
*/
final String secretKey ="NN0Z8mBsOJDckEGiZNqiaVuoozw6lx";
/**
* 发消息使用的一级Topic,需要先在MQ控制台里申请
*/
final String topic ="liangjing12345";
/**
* MQTT的ClientID,一般由2部分组成,GroupID@@@DeviceID
* 其中GroupID在MQ控制台里申请
* DeviceID由应用方设置,可能是设备编号等,需要唯一,否则服务端拒绝重复的ClientID连接
*/
final String consumerClientId ="GID_LIANGJING@@@456";//消费者
// final String producerClientId ="GID_XXX@@@@XXXXXX";
String sign;
MemoryPersistence persistence = new MemoryPersistence();
try {
final MqttClient sampleClient = new MqttClient(broker, consumerClientId, persistence);
final MqttConnectOptions connOpts = new MqttConnectOptions();
System.out.println("Connecting to broker: " + broker);
/**
* 计算签名,将签名作为MQTT的password。
* 签名的计算方法,参考工具类MacSignature,第一个参数是ClientID的前半部分,即GroupID
* 第二个参数阿里云的SecretKey
*/
sign = MacSignature.macSignature(consumerClientId.split("@@@")[0], secretKey);
/**
* 设置订阅方订阅的Topic集合,此处遵循MQTT的订阅规则,可以是一级Topic,二级Topic,P2P消息不需要显式订阅,
*/
final String[] topicFilters=new String[]{topic+"/notice/"};
final int[]qos={0};
//final String[] topicFilters=new String[]{topic+"/notice/",topic+"/p2p"};
//final int[]qos={0,0};
connOpts.setUserName(acessKey);
connOpts.setServerURIs(new String[] { broker });
connOpts.setPassword(sign.toCharArray());
connOpts.setCleanSession(false);
connOpts.setKeepAliveInterval(100);
sampleClient.setCallback(new MqttCallback() {
public void connectionLost(Throwable throwable) {
System.out.println("mqtt connection lost");
throwable.printStackTrace();
while(!sampleClient.isConnected()){
try {
sampleClient.connect(connOpts);
sampleClient.subscribe(topicFilters,qos);
} catch (MqttException e) {
e.printStackTrace();
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void messageArrived(String topic, MqttMessage mqttMessage) throws Exception {
//System.out.println("messageArrived:" + topic + "------" + new String(mqttMessage.getPayload()));
Toast.makeText(getApplication(),"接收到了消息",Toast.LENGTH_LONG).show();
}
public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
//System.out.println("deliveryComplete:" + iMqttDeliveryToken.getMessageId());
Toast.makeText(getApplication(),"接收到了消息",Toast.LENGTH_LONG).show();
}
});
sampleClient.connect(connOpts);
sampleClient.subscribe(topicFilters,qos);
Thread.sleep(Integer.MAX_VALUE);
} catch (Exception me) {
me.printStackTrace();
}
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/