Bin Anfänger aber mit python3 wird die ganze while Schleife ausgeführt,
Das Ergebnis mit Java sieht leider so aus:
{"dataId":"AAW9AfyzO9CyYfJ7vRX9B4AAB"
"devId":"732500878caab5f91c8b"
"productKey":"p9tcjpycdgh8zsvx"
"status":[{"1":"home"
"code":"master_mode"
"t":1615728793812
GrpOne: 1615728793812
[CODE lang="java" title="while?" highlight="System.out.println("GrpOne: "+m.group(1));"]package com.tuya.open.sdk.example;
import com.alibaba.fastjson.JSON;
import com.tuya.open.sdk.mq.AESBase64Utils;
import com.tuya.open.sdk.mq.MqConfigs;
import com.tuya.open.sdk.mq.MqConsumer;
import java.util.Arrays;
import java.sql.Timestamp;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ConsumerExample {
public static void main(String[] args) throws Exception {
String url = MqConfigs.EU_SERVER_URL;
url = "pulsar+ssl://mqe.tuyaeu.com:7285/";
String accessId = "5ts9iy";
String accessKey = "44a9975";
MqConsumer mqConsumer = MqConsumer.build().serviceUrl(url).accessId(accessId).accessKey(accessKey)
.maxRedeliverCount(3).messageListener(message -> {
System.out.println("---------------------------------------------------");
System.out.println("Message received:" + new String(message.getData()) + ",seq="
+ message.getSequenceId() + ",time=" + message.getPublishTime() + ",consumed time="
+ System.currentTimeMillis());
String jsonMessage = new String(message.getData());
MessageVO vo = JSON.parseObject(jsonMessage, MessageVO.class);
System.out.println("the real message data:" );
String rmessage = AESBase64Utils.decrypt(vo.getData(), accessKey.substring(8, 24));
String[] arrData = rmessage.split(",", -1);
int millis=0;
Pattern p = Pattern.compile(".t.*\\d+)");
for(int i = 0; i< arrData.length; i++){
System.out.println(arrData+"\n");
Matcher m = p.matcher(arrData);
while (m.find()) {
System.out.println("GrpOne: "+m.group(1));
millis = Integer.parseInt(m.group(1));
Date date2 = new Date(millis*10000);
System.out.println("Date2:"+date2);
}
}
}
);
mqConsumer.start();
}
}[/CODE]
Das Ergebnis mit Java sieht leider so aus:
{"dataId":"AAW9AfyzO9CyYfJ7vRX9B4AAB"
"devId":"732500878caab5f91c8b"
"productKey":"p9tcjpycdgh8zsvx"
"status":[{"1":"home"
"code":"master_mode"
"t":1615728793812
GrpOne: 1615728793812
[CODE lang="java" title="while?" highlight="System.out.println("GrpOne: "+m.group(1));"]package com.tuya.open.sdk.example;
import com.alibaba.fastjson.JSON;
import com.tuya.open.sdk.mq.AESBase64Utils;
import com.tuya.open.sdk.mq.MqConfigs;
import com.tuya.open.sdk.mq.MqConsumer;
import java.util.Arrays;
import java.sql.Timestamp;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ConsumerExample {
public static void main(String[] args) throws Exception {
String url = MqConfigs.EU_SERVER_URL;
url = "pulsar+ssl://mqe.tuyaeu.com:7285/";
String accessId = "5ts9iy";
String accessKey = "44a9975";
MqConsumer mqConsumer = MqConsumer.build().serviceUrl(url).accessId(accessId).accessKey(accessKey)
.maxRedeliverCount(3).messageListener(message -> {
System.out.println("---------------------------------------------------");
System.out.println("Message received:" + new String(message.getData()) + ",seq="
+ message.getSequenceId() + ",time=" + message.getPublishTime() + ",consumed time="
+ System.currentTimeMillis());
String jsonMessage = new String(message.getData());
MessageVO vo = JSON.parseObject(jsonMessage, MessageVO.class);
System.out.println("the real message data:" );
String rmessage = AESBase64Utils.decrypt(vo.getData(), accessKey.substring(8, 24));
String[] arrData = rmessage.split(",", -1);
int millis=0;
Pattern p = Pattern.compile(".t.*\\d+)");
for(int i = 0; i< arrData.length; i++){
System.out.println(arrData+"\n");
Matcher m = p.matcher(arrData);
while (m.find()) {
System.out.println("GrpOne: "+m.group(1));
millis = Integer.parseInt(m.group(1));
Date date2 = new Date(millis*10000);
System.out.println("Date2:"+date2);
}
}
}
);
mqConsumer.start();
}
}[/CODE]