|
@@ -20,7 +20,6 @@ import org.springframework.stereotype.Component;
|
|
|
|
|
|
|
|
import java.util.Base64;
|
|
import java.util.Base64;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
-import java.util.concurrent.ExecutorService;
|
|
|
|
|
import java.util.concurrent.LinkedBlockingQueue;
|
|
import java.util.concurrent.LinkedBlockingQueue;
|
|
|
import java.util.concurrent.ThreadPoolExecutor;
|
|
import java.util.concurrent.ThreadPoolExecutor;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
import java.util.concurrent.TimeUnit;
|
|
@@ -72,10 +71,14 @@ public class MnsHandler {
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
log.error("消息处理异常", e);
|
|
log.error("消息处理异常", e);
|
|
|
// 增加恢复逻辑(如休眠后重试)
|
|
// 增加恢复逻辑(如休眠后重试)
|
|
|
- try { TimeUnit.SECONDS.sleep(5); } catch (InterruptedException ex) { break; }
|
|
|
|
|
- }finally {
|
|
|
|
|
|
|
+ try {
|
|
|
|
|
+ TimeUnit.SECONDS.sleep(5);
|
|
|
|
|
+ } catch (InterruptedException ex) {
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ } finally {
|
|
|
//打印线程池状态
|
|
//打印线程池状态
|
|
|
- log.info("Pool Size:{} ,Active Thread Count:{},Task Queue Size:{},Completed Task Count: {}" ,executorService.getPoolSize(),executorService.getActiveCount(),executorService.getQueue().size(), executorService.getCompletedTaskCount());
|
|
|
|
|
|
|
+ log.info("Pool Size:{} ,Active Thread Count:{},Task Queue Size:{},Completed Task Count: {}", executorService.getPoolSize(), executorService.getActiveCount(), executorService.getQueue().size(), executorService.getCompletedTaskCount());
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
@@ -129,17 +132,20 @@ public class MnsHandler {
|
|
|
log.info("message body: " + (IS_BASE64 ? popMsg.getMessageBody() : popMsg.getMessageBodyAsRawString()));
|
|
log.info("message body: " + (IS_BASE64 ? popMsg.getMessageBody() : popMsg.getMessageBodyAsRawString()));
|
|
|
log.info("message id: " + popMsg.getMessageId());
|
|
log.info("message id: " + popMsg.getMessageId());
|
|
|
log.info("message dequeue count:" + popMsg.getDequeueCount());
|
|
log.info("message dequeue count:" + popMsg.getDequeueCount());
|
|
|
- //<<to add your special logic.>>
|
|
|
|
|
|
|
|
|
|
- handleMessage(popMsg.getMessageBodyAsRawString());
|
|
|
|
|
-
|
|
|
|
|
- //remember to delete message when consume message successfully.
|
|
|
|
|
- queue.deleteMessage(popMsg.getReceiptHandle());
|
|
|
|
|
- log.info("delete message successfully.\n");
|
|
|
|
|
|
|
+ try {
|
|
|
|
|
+ handleMessage(queue, popMsg);
|
|
|
|
|
+ queue.deleteMessage(popMsg.getReceiptHandle());
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.error("Failed to process message: " + popMsg.getMessageId(), e);
|
|
|
|
|
+ }
|
|
|
|
|
+ log.info("delete message successfully.");
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- static void handleMessage(String base64) {
|
|
|
|
|
|
|
+
|
|
|
|
|
+ static void handleMessage(CloudQueue queue, Message popMsg) {
|
|
|
|
|
+ var base64 = popMsg.getMessageBodyAsRawString();
|
|
|
// 对messageBody进行base64解码
|
|
// 对messageBody进行base64解码
|
|
|
var messageBodyStr = new String(decoder.decode(base64), CharsetUtil.CHARSET_UTF_8);
|
|
var messageBodyStr = new String(decoder.decode(base64), CharsetUtil.CHARSET_UTF_8);
|
|
|
|
|
|
|
@@ -150,13 +156,12 @@ public class MnsHandler {
|
|
|
log.info("消息内容:{}", json.toJSONString());
|
|
log.info("消息内容:{}", json.toJSONString());
|
|
|
if ("upload".equals(json.getString("messagetype"))) {
|
|
if ("upload".equals(json.getString("messagetype"))) {
|
|
|
var event = json.getJSONObject("payload").getString("event");
|
|
var event = json.getJSONObject("payload").getString("event");
|
|
|
- var handler = AwoaraEventHandlerFactory.getEventHandler(event);
|
|
|
|
|
|
|
+ var eventHandler = AwoaraEventHandlerFactory.getEventHandler(event);
|
|
|
var message = parseMessageBody(json.toJSONString(), Event.getClazz(event));
|
|
var message = parseMessageBody(json.toJSONString(), Event.getClazz(event));
|
|
|
- handler.handle(message);
|
|
|
|
|
|
|
+ eventHandler.handle(message);
|
|
|
} else {
|
|
} else {
|
|
|
log.info("message type is not upload");
|
|
log.info("message type is not upload");
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private static <T> MessageBody<T> parseMessageBody(String jsonStr, Class<T> clazz) {
|
|
private static <T> MessageBody<T> parseMessageBody(String jsonStr, Class<T> clazz) {
|