提交 6e4695cd authored 作者: 艾庆国's avatar 艾庆国

车辆轨迹同步

上级 68bda21a
package com.clx.performance.constant;
/**
* @Author: aiqingguo
* @Description: 轨迹-mq
* @Date: 2023-10-19 15:10:10
* @Version: 1.0
*/
public class RabbitKeyTraceConstants {
private static final String PREFIX = "clx-performance.trace.";
private static final String EXCHANGE = ".exchange";
private static final String QUEUE = ".queue";
private static final String QUEUE_ROUTING_KEY = ".routing.key";
private static final String DELAY_QUEUE = ".delay.queue";
private static final String DELAY_ROUTING_KEY = ".delay.routing.key";
private static final String DEAD_QUEUE = ".dead.queue";
private static final String DEAD_ROUTING_KEY = ".dead.routing.key";
private RabbitKeyTraceConstants() {
}
/**
* 缺省交换机
*/
public static final String DEFAULT_EXCHANGE = PREFIX +"default"+EXCHANGE;
/**
* 缺省延迟队列
*/
public static final String DEFAULT_DELAY_QUEUE = PREFIX +"default"+DELAY_QUEUE;
public static final String DEFAULT_DELAY_ROUTING_KEY = PREFIX +"default"+DELAY_ROUTING_KEY;
public static final String DEFAULT_DEAD_QUEUE = PREFIX +"default"+DEAD_QUEUE;
public static final String DEFAULT_DEAD_ROUTING_KEY = PREFIX +"default"+DEAD_ROUTING_KEY;
/**
* 车辆轨迹同步
*/
public static final String TRUCK_TRACE_SYNC_QUEUE = PREFIX +"truck.trace.update"+QUEUE;
public static final String TRUCK_TRACE_SYNC_ROUTING_KEY = PREFIX +"truck.trace.update"+QUEUE_ROUTING_KEY;
}
package com.clx.performance.esplus.mapper;
import com.clx.performance.esplus.model.DriverTraceESPlus;
import org.dromara.easyes.core.kernel.BaseEsMapper;
public interface DriverTraceESPlusMapper extends BaseEsMapper<DriverTraceESPlus> {
}
\ No newline at end of file
package com.clx.performance.esplus.mapper;
import com.clx.performance.esplus.model.TruckTraceESPlus;
import org.dromara.easyes.core.kernel.BaseEsMapper;
public interface TruckTraceESPlusMapper extends BaseEsMapper<TruckTraceESPlus> {
}
\ No newline at end of file
package com.clx.performance.esplus.model;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
import org.dromara.easyes.annotation.IndexField;
import org.dromara.easyes.annotation.IndexId;
import org.dromara.easyes.annotation.IndexName;
import org.dromara.easyes.annotation.rely.FieldType;
import org.dromara.easyes.annotation.rely.IdType;
import org.elasticsearch.common.geo.GeoPoint;
import org.springframework.data.annotation.Id;
import java.math.BigDecimal;
@Data
@IndexName("clx_trace_driver_trace_index1")
public class DriverTraceESPlus {
@IndexId(type= IdType.CUSTOMIZE)
private String id;
@ApiModelProperty("用户编号")
private Long userNo;
@ApiModelProperty("1-正常上传,2-离线上传")
private Integer dataType;
@ApiModelProperty("位置")
private GeoPoint location;
@ApiModelProperty("定位时间")
private String positionTime;
@ApiModelProperty("添加时间")
private String createTime;
@ApiModelProperty("修改时间")
private String modifiedTime;
}
\ No newline at end of file
package com.clx.performance.esplus.model;
import lombok.Data;
import org.dromara.easyes.annotation.IndexId;
import org.dromara.easyes.annotation.IndexName;
import org.dromara.easyes.annotation.Settings;
import org.dromara.easyes.annotation.rely.IdType;
import org.elasticsearch.common.geo.GeoPoint;
import java.math.BigDecimal;
@Data
@IndexName(value = "quality_task_info", keepGlobalPrefix = true)
public class TruckTraceESPlus {
@IndexId(type= IdType.CUSTOMIZE)
private String id;
private String truckNo; //车辆编号
private BigDecimal angle; //角度
private BigDecimal speed; //速度
private BigDecimal mileage; //里程
private BigDecimal height; //高度
private GeoPoint location; //位置
private String gpsTime; //时间
private String createTime;
private String modifiedTime;
}
\ No newline at end of file
package com.clx.performance.listener.trace;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.clx.performance.common.MqDelay;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeyTraceConstants;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @Author: 艾庆国
* @Description: 轨迹 mq
* @Date: 2023-10-20 10:30:49
* @Version: 1.0
*/
@Slf4j
@Component
public class TraceDelayListener {
@Autowired
private RabbitTemplate rabbitTemplate;
@RabbitListener(queues = RabbitKeyTraceConstants.DEFAULT_DEAD_QUEUE)
public void process(Message message) {
try{
log.info("轨迹-延迟, message:{}", message);
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<MqDelay>>(){}).getData());
}catch (Exception e){
log.info("轨迹-延迟 失败",e);
}
}
void process(MqDelay mq){
Message message = MessageBuilder.withBody(JSON.toJSONString(mq.getData()).getBytes()).build();
rabbitTemplate.send(mq.getExchange(), mq.getRouterKey(), message);
}
}
package com.clx.performance.listener.trace;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeyTraceConstants;
import com.clx.performance.param.mq.trace.TruckTraceSyncMqParam;
import com.clx.performance.service.trace.TruckTraceMqHandlerService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @Author: 艾庆国
* @Description: mq
* @Date: 2023-10-20 16:34:40
* @Version: 1.0
*/
@Slf4j
@Component
public class TruckTraceSyncListener {
@Autowired
private TruckTraceMqHandlerService truckTraceMqHandlerService;
@RabbitListener(queues = RabbitKeyTraceConstants.TRUCK_TRACE_SYNC_QUEUE)
public void process(Message message) {
try{
log.info("轨迹, 车辆轨迹同步, message:{}", new String(message.getBody()));
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<TruckTraceSyncMqParam>>(){}).getData());
}catch (Exception e){
log.info("轨迹, 车辆轨迹同步失败",e);
}
}
private void process(TruckTraceSyncMqParam mq){
truckTraceMqHandlerService.truckTracSync(mq);
}
}
......@@ -3,7 +3,7 @@ package com.clx.performance.service.impl.trace;
import com.alibaba.fastjson.JSON;
import com.clx.performance.common.MqDelay;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.config.RabbitKeyTraceConstants;
import com.clx.performance.constant.RabbitKeyTraceConstants;
import com.clx.performance.param.mq.trace.TruckTraceSyncMqParam;
import com.clx.performance.service.trace.TruckTraceMqService;
import lombok.extern.slf4j.Slf4j;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论