八项作业mq功能
parent
f338b750da
commit
1daf485e92
15
pom.xml
15
pom.xml
|
@ -461,6 +461,21 @@
|
||||||
<artifactId>hutool-all</artifactId>
|
<artifactId>hutool-all</artifactId>
|
||||||
<version>5.0.5</version>
|
<version>5.0.5</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.rocketmq</groupId>
|
||||||
|
<artifactId>rocketmq-client-java</artifactId>
|
||||||
|
<version>5.0.5</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.rocketmq</groupId>
|
||||||
|
<artifactId>rocketmq-spring-boot-starter</artifactId>
|
||||||
|
<version>2.2.2</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.projectlombok</groupId>
|
||||||
|
<artifactId>lombok</artifactId>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<build>
|
<build>
|
||||||
<!-- <finalName>qa-prevention-gwj</finalName>
|
<!-- <finalName>qa-prevention-gwj</finalName>
|
||||||
|
|
|
@ -0,0 +1,68 @@
|
||||||
|
package com.zcloud.dto.mq;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class Response {
|
||||||
|
private String result;
|
||||||
|
|
||||||
|
private String exception;
|
||||||
|
|
||||||
|
private String code;
|
||||||
|
|
||||||
|
private String message;
|
||||||
|
|
||||||
|
public Response Ok() {
|
||||||
|
this.result = "succeed";
|
||||||
|
this.code = "0";
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Response OK() {
|
||||||
|
Response response = new Response();
|
||||||
|
response.result = "succeed";
|
||||||
|
response.code = "0";
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Response Error() {
|
||||||
|
this.result = "succeed";
|
||||||
|
this.code = "9999";
|
||||||
|
this.exception = "系统异常";
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Response Error(String errorMessage) {
|
||||||
|
this.result = "succeed";
|
||||||
|
this.code = "9999";
|
||||||
|
this.exception = errorMessage;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Response Error(String code, String errorMessage) {
|
||||||
|
this.result = "succeed";
|
||||||
|
this.code = code;
|
||||||
|
this.exception = errorMessage;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Response ERROR() {
|
||||||
|
Response response = new Response();
|
||||||
|
response.result = "succeed";
|
||||||
|
response.code = "0";
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Response ERROR(String errorMessage) {
|
||||||
|
Response response = new Response();
|
||||||
|
response.result = "succeed";
|
||||||
|
response.code = "9999";
|
||||||
|
response.exception = errorMessage;
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMessage(Object obj) {
|
||||||
|
this.message = JSON.toJSONString(obj);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
package com.zcloud.dto.mq;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.zcloud.entity.PageData;
|
||||||
|
import com.zcloud.util.Warden;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class TenCorpDto {
|
||||||
|
// 请秋id
|
||||||
|
private String id;
|
||||||
|
// 消息来源名称
|
||||||
|
private String producer_name;
|
||||||
|
private String topic;
|
||||||
|
//印记(方便寻找该条请求)
|
||||||
|
private String mark;
|
||||||
|
// 标记名称
|
||||||
|
private String mark_name;
|
||||||
|
// 消息发送时间(yyyy-MM-dd HH:mm:ss:SSS)
|
||||||
|
private String time_stamp;
|
||||||
|
// 消息体
|
||||||
|
private String message;
|
||||||
|
|
||||||
|
private PageData data;
|
||||||
|
|
||||||
|
public TenCorpDto() {
|
||||||
|
this.id = Warden.get32UUID();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return JSON.toJSONString(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PageData getPd() {
|
||||||
|
PageData info = new PageData();
|
||||||
|
info.put("ID", this.id);
|
||||||
|
info.put("PRODUCER_NAME", this.producer_name);
|
||||||
|
info.put("MARK", this.mark);
|
||||||
|
info.put("MARK_NAME", this.mark_name);
|
||||||
|
info.put("MESSAGE", JSONObject.toJSONString(this.data));
|
||||||
|
info.put("TOPIC",this.topic);
|
||||||
|
return info;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,87 @@
|
||||||
|
package com.zcloud.mq.controller;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.zcloud.controller.gf.GFEightWorkController;
|
||||||
|
import com.zcloud.entity.PageData;
|
||||||
|
import com.zcloud.mq.mapper.MqMessageLogMapper;
|
||||||
|
import com.zcloud.dto.mq.TenCorpDto;
|
||||||
|
import com.zcloud.mq.service.LogService;
|
||||||
|
import com.zcloud.mq.service.SendMessageService;
|
||||||
|
import com.zcloud.mq.util.MqUtil;
|
||||||
|
import com.zcloud.util.DateUtil;
|
||||||
|
import com.zcloud.util.Warden;
|
||||||
|
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
|
||||||
|
import org.apache.rocketmq.spring.annotation.SelectorType;
|
||||||
|
import org.apache.rocketmq.spring.core.RocketMQListener;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 说明:消费某个 topic 下指定 tag 的消息 对接课件DEMO
|
||||||
|
* 作者:wangxuan
|
||||||
|
* 官网:www.zcloudchina.com
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
@RocketMQMessageListener(consumerGroup = "${mq.group.eightWork}",
|
||||||
|
topic = "${mq.topic.eightWork}",
|
||||||
|
selectorType = SelectorType.TAG)
|
||||||
|
public class EightWorkListener implements RocketMQListener<String> {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private GFEightWorkController eightWorkClient;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SendMessageService sendMessageService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private LogService logService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private MqMessageLogMapper mqMessageLogMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onMessage(String message) {
|
||||||
|
TenCorpDto data = JSON.parseObject(message, TenCorpDto.class);
|
||||||
|
PageData log = data.getPd();
|
||||||
|
log.put("MESSAGE_LOG_ID", Warden.get32UUID());
|
||||||
|
log.put("CREATE_TIME", DateUtil.getTime());
|
||||||
|
log.put("PRODUCER_NAME",data.getProducer_name());
|
||||||
|
log.put("TYPE","1");
|
||||||
|
try {
|
||||||
|
System.out.println("消费者:" + data.toString());
|
||||||
|
Date limit_date = MqUtil.dateFormat(data.getTime_stamp());
|
||||||
|
if (limit_date.getTime() - new Date().getTime() > 1000) {
|
||||||
|
sendMessageService.SendDelayQueue(data);
|
||||||
|
log.put("DIGESTION_FLAG","0");
|
||||||
|
} else {
|
||||||
|
switch (data.getMessage()){
|
||||||
|
case "confined-space":
|
||||||
|
System.out.println("受限空间模块消费");
|
||||||
|
// eightWorkClient.confinedSpaceCancel(data.getData());
|
||||||
|
break;
|
||||||
|
case "electricity":
|
||||||
|
System.out.println("临时用电模块消费");
|
||||||
|
// eightWorkClient.electricityCancel(data.getData());
|
||||||
|
break;
|
||||||
|
case "hot-work":
|
||||||
|
System.out.println("动火模块消费");
|
||||||
|
// eightWorkClient.hotWorkCancel(data.getData());
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
System.out.println("异常模块不消费");
|
||||||
|
throw new RuntimeException("未找到对应的消费者");
|
||||||
|
}
|
||||||
|
log.put("DIGESTION_FLAG","1");
|
||||||
|
}
|
||||||
|
mqMessageLogMapper.save(log);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
logService.saveErrorMessage(log,e.getMessage());
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
package com.zcloud.mq.controller;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.zcloud.dto.mq.TenCorpDto;
|
||||||
|
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
|
||||||
|
import org.apache.rocketmq.spring.annotation.SelectorType;
|
||||||
|
import org.apache.rocketmq.spring.core.RocketMQListener;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 说明:消费某个 topic 下指定 tag 的消息 对接课件DEMO
|
||||||
|
* 作者:wangxuan
|
||||||
|
* 官网:www.zcloudchina.com
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
@RocketMQMessageListener(consumerGroup = "${mq.group.info}",
|
||||||
|
topic = "${mq.topic.info}",
|
||||||
|
selectorType = SelectorType.TAG)
|
||||||
|
public class MqListener implements RocketMQListener<String> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onMessage(String message) {
|
||||||
|
TenCorpDto data = JSON.parseObject(message, TenCorpDto.class);
|
||||||
|
try {
|
||||||
|
System.out.println("2消费者:" + data.toString());
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
package com.zcloud.mq.controller;
|
||||||
|
|
||||||
|
import com.zcloud.controller.base.BaseController;
|
||||||
|
import com.zcloud.dto.mq.Response;
|
||||||
|
import com.zcloud.dto.mq.TenCorpDto;
|
||||||
|
import com.zcloud.mq.service.SendMessageService;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 说明:TODO
|
||||||
|
* 作者:wangxuan
|
||||||
|
* 官网:www.zcloudchina.com
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/messageQueue")
|
||||||
|
public class SendController extends BaseController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SendMessageService sendMessageService;
|
||||||
|
|
||||||
|
@RequestMapping("/sendMessage")
|
||||||
|
public Response sendMessage(@RequestParam("tenCorpDto") TenCorpDto tenCorpDto) throws Exception {
|
||||||
|
try {
|
||||||
|
sendMessageService.sendMessage(tenCorpDto);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return Response.OK();
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("SendTimelyQueue")
|
||||||
|
public Response timelyQueue(@RequestBody TenCorpDto tenCorpDto) throws Exception {
|
||||||
|
try {
|
||||||
|
sendMessageService.sendMessage(tenCorpDto);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return Response.OK();
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/SendDelayQueue")
|
||||||
|
public Response SendDelayQueue(@RequestBody TenCorpDto tenCorpDto) throws Exception {
|
||||||
|
try {
|
||||||
|
sendMessageService.SendDelayQueue(tenCorpDto);
|
||||||
|
return Response.OK();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return Response.ERROR(e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,59 @@
|
||||||
|
package com.zcloud.mq.mapper;
|
||||||
|
|
||||||
|
import com.zcloud.entity.Page;
|
||||||
|
import com.zcloud.entity.PageData;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 说明:mq错误信息日志表
|
||||||
|
* 作者:luoxiaobao
|
||||||
|
* 时间:2023-06-28
|
||||||
|
* 官网:www.zcloudchina.com
|
||||||
|
*/
|
||||||
|
public interface MqErrorMessageLogMapper{
|
||||||
|
|
||||||
|
/**新增
|
||||||
|
* @param pd
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
void save(PageData pd);
|
||||||
|
|
||||||
|
/**删除
|
||||||
|
* @param pd
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
void delete(PageData pd);
|
||||||
|
|
||||||
|
/**修改
|
||||||
|
* @param pd
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
void edit(PageData pd);
|
||||||
|
|
||||||
|
/**列表
|
||||||
|
* @param page
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
List<PageData> datalistPage(Page page);
|
||||||
|
|
||||||
|
/**列表(全部)
|
||||||
|
* @param pd
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
List<PageData> listAll(PageData pd);
|
||||||
|
|
||||||
|
/**通过id获取数据
|
||||||
|
* @param pd
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
PageData findById(PageData pd);
|
||||||
|
|
||||||
|
/**批量删除
|
||||||
|
* @param ArrayDATA_IDS
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
void deleteAll(String[] ArrayDATA_IDS);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
package com.zcloud.mq.mapper;
|
||||||
|
|
||||||
|
import com.zcloud.entity.Page;
|
||||||
|
import com.zcloud.entity.PageData;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 说明:mq消费者\生产者动作记录表
|
||||||
|
* 作者:luoxiaobao
|
||||||
|
* 时间:2023-06-28
|
||||||
|
* 官网:www.zcloudchina.com
|
||||||
|
*/
|
||||||
|
public interface MqMessageLogMapper{
|
||||||
|
|
||||||
|
/**新增
|
||||||
|
* @param pd
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
void save(PageData pd);
|
||||||
|
|
||||||
|
/**删除
|
||||||
|
* @param pd
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
void delete(PageData pd);
|
||||||
|
|
||||||
|
/**修改
|
||||||
|
* @param pd
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
void edit(PageData pd);
|
||||||
|
|
||||||
|
/**列表
|
||||||
|
* @param page
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
List<PageData> datalistPage(Page page);
|
||||||
|
|
||||||
|
/**列表(全部)
|
||||||
|
* @param pd
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
List<PageData> listAll(PageData pd);
|
||||||
|
|
||||||
|
/**通过id获取数据
|
||||||
|
* @param pd
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
PageData findById(PageData pd);
|
||||||
|
|
||||||
|
/**批量删除
|
||||||
|
* @param ArrayDATA_IDS
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
void deleteAll(String[] ArrayDATA_IDS);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
package com.zcloud.mq.service;
|
||||||
|
|
||||||
|
import com.zcloud.entity.PageData;
|
||||||
|
|
||||||
|
public interface LogService {
|
||||||
|
|
||||||
|
void saveLog(PageData pageData);
|
||||||
|
void saveLog(PageData pageData,String type);
|
||||||
|
|
||||||
|
void saveErrorMessage(PageData pageData,String errorMessage);
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
package com.zcloud.mq.service;
|
||||||
|
|
||||||
|
import com.zcloud.dto.mq.TenCorpDto;
|
||||||
|
|
||||||
|
public interface SendMessageService {
|
||||||
|
|
||||||
|
void sendMessage(TenCorpDto tenCorpDto) throws Exception;
|
||||||
|
|
||||||
|
void SendDelayQueue(TenCorpDto tenCorpDto);
|
||||||
|
void SendDelayQueue(String message);
|
||||||
|
}
|
|
@ -0,0 +1,43 @@
|
||||||
|
package com.zcloud.mq.service.impl;
|
||||||
|
|
||||||
|
import com.zcloud.entity.PageData;
|
||||||
|
import com.zcloud.mq.mapper.MqErrorMessageLogMapper;
|
||||||
|
import com.zcloud.mq.mapper.MqMessageLogMapper;
|
||||||
|
import com.zcloud.mq.service.LogService;
|
||||||
|
import com.zcloud.util.DateUtil;
|
||||||
|
import com.zcloud.util.Warden;
|
||||||
|
import org.springframework.scheduling.annotation.Async;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class LogServiceImpl implements LogService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private MqErrorMessageLogMapper mqErrorMessageLogMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private MqMessageLogMapper mqMessageLogMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Async
|
||||||
|
public void saveLog(PageData pageData) {
|
||||||
|
this.saveLog(pageData,"0");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void saveLog(PageData pageData, String type) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Async
|
||||||
|
public void saveErrorMessage(PageData log,String errorMessage) {
|
||||||
|
log.put("ERROR_MESSAGE", errorMessage);
|
||||||
|
log.put("MESSAGE_ERROR_LOG_ID", Warden.get32UUID());
|
||||||
|
log.put("TYPE", "0");
|
||||||
|
log.put("TIME", DateUtil.getTime());
|
||||||
|
mqErrorMessageLogMapper.save(log);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,129 @@
|
||||||
|
package com.zcloud.mq.service.impl;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.zcloud.dto.mq.TenCorpDto;
|
||||||
|
import com.zcloud.entity.PageData;
|
||||||
|
import com.zcloud.mq.mapper.MqErrorMessageLogMapper;
|
||||||
|
import com.zcloud.mq.mapper.MqMessageLogMapper;
|
||||||
|
import com.zcloud.mq.service.LogService;
|
||||||
|
import com.zcloud.mq.service.SendMessageService;
|
||||||
|
import com.zcloud.mq.util.MqUtil;
|
||||||
|
import com.zcloud.util.DateUtil;
|
||||||
|
import com.zcloud.util.Warden;
|
||||||
|
import org.apache.rocketmq.client.producer.SendResult;
|
||||||
|
import org.apache.rocketmq.client.producer.SendStatus;
|
||||||
|
import org.apache.rocketmq.spring.core.RocketMQTemplate;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.messaging.support.GenericMessage;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class SendMessageServiceImpl implements SendMessageService {
|
||||||
|
|
||||||
|
@Value("${mq.topic.info}")
|
||||||
|
private String info;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private RocketMQTemplate rocketMQTemplate;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private MqErrorMessageLogMapper mqErrorMessageLogMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private LogService logService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private MqMessageLogMapper mqMessageLogMapper;
|
||||||
|
|
||||||
|
public void sendMessage(TenCorpDto tenCorpDto) throws Exception {
|
||||||
|
try {
|
||||||
|
PageData log = tenCorpDto.getPd();
|
||||||
|
log.put("MESSAGE_LOG_ID", Warden.get32UUID());
|
||||||
|
log.put("CREATE_TIME", DateUtil.getTime());
|
||||||
|
mqMessageLogMapper.save(log);
|
||||||
|
System.out.println("生产者:" + tenCorpDto.toString());
|
||||||
|
SendResult sendResult = rocketMQTemplate.syncSend(this.info, tenCorpDto.toString());
|
||||||
|
if (!sendResult.getSendStatus().equals(SendStatus.SEND_OK)) {
|
||||||
|
throw new RuntimeException("产品入栈失败");
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
PageData log = tenCorpDto.getPd();
|
||||||
|
log.put("MESSAGE_ERROR_LOG_ID", Warden.get32UUID());
|
||||||
|
log.put("ERROR_MESSAGE", e.getMessage());
|
||||||
|
log.put("TYPE", "0");
|
||||||
|
log.put("TIME", DateUtil.getTime());
|
||||||
|
mqErrorMessageLogMapper.save(log);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void SendDelayQueue(TenCorpDto tenCorpDto) {
|
||||||
|
PageData log = tenCorpDto.getPd();
|
||||||
|
log.put("MESSAGE_LOG_ID", Warden.get32UUID());
|
||||||
|
try {
|
||||||
|
log.put("CREATE_TIME", DateUtil.getTime());
|
||||||
|
log.put("PRODUCER_NAME",tenCorpDto.getProducer_name());
|
||||||
|
log.put("TYPE","0");
|
||||||
|
log.put("PLAN_TIME",tenCorpDto.getTime_stamp());
|
||||||
|
mqMessageLogMapper.save(log);
|
||||||
|
System.out.println("生产者:" + tenCorpDto.toString());
|
||||||
|
// 推送消息
|
||||||
|
SendResult sendResult = rocketMQTemplate.syncSend(
|
||||||
|
MqUtil.analysistopic(tenCorpDto.getTopic()),
|
||||||
|
new GenericMessage<>(tenCorpDto.toString()),
|
||||||
|
3000,
|
||||||
|
MqUtil.analysisTime(tenCorpDto.getTime_stamp()));
|
||||||
|
|
||||||
|
if (!sendResult.getSendStatus().equals(SendStatus.SEND_OK)) {
|
||||||
|
throw new RuntimeException("产品入栈失败");
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
log.put("ERROR_MESSAGE", e.getMessage());
|
||||||
|
log.put("MESSAGE_ERROR_LOG_ID", Warden.get32UUID());
|
||||||
|
log.put("TYPE", "0");
|
||||||
|
log.put("TIME", DateUtil.getTime());
|
||||||
|
mqErrorMessageLogMapper.save(log);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void SendDelayQueue(String message) {
|
||||||
|
TenCorpDto tenCorpDto = JSONObject.parseObject(message,TenCorpDto.class);
|
||||||
|
try {
|
||||||
|
PageData log = tenCorpDto.getPd();
|
||||||
|
log.put("CREATE_TIME", DateUtil.getTime());
|
||||||
|
log.put("PRODUCER_NAME",tenCorpDto.getProducer_name());
|
||||||
|
log.put("MESSAGE_LOG_ID", Warden.get32UUID());
|
||||||
|
mqMessageLogMapper.save(log);
|
||||||
|
System.out.println("生产者:" + tenCorpDto.toString());
|
||||||
|
// 推送消息
|
||||||
|
SendResult sendResult = rocketMQTemplate.syncSend(
|
||||||
|
MqUtil.analysistopic(tenCorpDto.getTopic()),
|
||||||
|
new GenericMessage<>(message),
|
||||||
|
3000,
|
||||||
|
MqUtil.analysisTime(tenCorpDto.getTime_stamp()));
|
||||||
|
|
||||||
|
if (!sendResult.getSendStatus().equals(SendStatus.SEND_OK)) {
|
||||||
|
throw new RuntimeException("产品入栈失败");
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
PageData log = tenCorpDto.getPd();
|
||||||
|
logService.saveErrorMessage(log,e.getMessage());
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
try {
|
||||||
|
System.out.println(MqUtil.analysisTime("2023-06-30 14:30:00:000"));
|
||||||
|
}catch (Exception e){
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
package com.zcloud.mq.util;
|
||||||
|
|
||||||
|
public class Const {
|
||||||
|
public static final String topic_eightWork="eightWork";
|
||||||
|
public static final String topic_info="info";
|
||||||
|
}
|
|
@ -0,0 +1,84 @@
|
||||||
|
package com.zcloud.mq.util;
|
||||||
|
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
public class MqUtil {
|
||||||
|
|
||||||
|
private final static SimpleDateFormat timeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
|
||||||
|
|
||||||
|
public static Integer analysisTime(String time) throws Exception{
|
||||||
|
Date agreed_date = timeFormat.parse(time);
|
||||||
|
long time_difference = agreed_date.getTime() - new Date().getTime();
|
||||||
|
if (time_difference < 0){
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (time_difference > 2*60*60*1000){
|
||||||
|
return 18;
|
||||||
|
}
|
||||||
|
if (time_difference > 60 * 60 * 1000){
|
||||||
|
return 17;
|
||||||
|
}
|
||||||
|
if (time_difference > 30 * 60 * 1000){
|
||||||
|
return 16;
|
||||||
|
}
|
||||||
|
if (time_difference > 20 * 60 * 1000){
|
||||||
|
return 15;
|
||||||
|
}
|
||||||
|
if (time_difference > 10 * 60 * 1000){
|
||||||
|
return 14;
|
||||||
|
}
|
||||||
|
if (time_difference > 9 * 60 * 1000){
|
||||||
|
return 13;
|
||||||
|
}
|
||||||
|
if (time_difference > 8 * 60 * 1000){
|
||||||
|
return 12;
|
||||||
|
}
|
||||||
|
if (time_difference > 7 * 60 * 1000){
|
||||||
|
return 11;
|
||||||
|
}
|
||||||
|
if (time_difference > 6 * 60 * 1000){
|
||||||
|
return 10;
|
||||||
|
}
|
||||||
|
if (time_difference > 5 * 60 * 1000){
|
||||||
|
return 9;
|
||||||
|
}
|
||||||
|
if (time_difference > 4 * 60 * 1000){
|
||||||
|
return 8;
|
||||||
|
}
|
||||||
|
if (time_difference > 3 * 60 * 1000){
|
||||||
|
return 7;
|
||||||
|
}
|
||||||
|
if (time_difference > 2 * 60 * 1000){
|
||||||
|
return 6;
|
||||||
|
}
|
||||||
|
if (time_difference > 60 * 1000){
|
||||||
|
return 5;
|
||||||
|
}
|
||||||
|
if (time_difference > 30 * 1000){
|
||||||
|
return 4;
|
||||||
|
}
|
||||||
|
if (time_difference > 10 * 1000){
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
if (time_difference > 5 * 1000){
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
if (time_difference > 1000){
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String analysistopic(String producerName) {
|
||||||
|
switch (producerName){
|
||||||
|
case "eightWork" : return Const.topic_eightWork;
|
||||||
|
case "info" : return Const.topic_info;
|
||||||
|
default: return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Date dateFormat(String date) throws Exception{
|
||||||
|
return timeFormat.parse(date);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue