Browse Source

处理错误消息导致服务卡死问题

chenw 7 years ago
parent
commit
38e8d690cb

+ 11 - 2
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/service/ReceiveService.java

@@ -52,9 +52,18 @@ public class ReceiveService {
     public void onMessage(@Payload MessageInfo info, @Headers Map<String,Object> headers, Channel channel)
             throws IOException {
         //消费者操作
-       logger.info("---------收到消息,消息id={},开始消费---------", info.getMsgId());
+        logger.info("---------收到消息,消息id={},开始消费---------", info.getMsgId());
         Executable task = null;
-       try {
+        try {
+            BillCodeSeq.valueOf(info.getBizType());
+        }catch (Exception e){
+            logger.info("没有此类型消息,直接丢弃");
+            Long deliveryTag = (Long) headers.get(AmqpHeaders.DELIVERY_TAG);
+            boolean multiple = false;
+            channel.basicAck(deliveryTag,multiple);
+            return;
+        }
+        try {
            switch(BillCodeSeq.valueOf(info.getBizType())) {
                case PURCHASE:       //采购单上传
                    task = new SendPurchaseTask();