package com.fastbee.mq.service.impl;
|
|
import com.fastbee.common.core.mq.DeviceReplyBo;
|
import com.fastbee.common.core.mq.InvokeReqDto;
|
import com.fastbee.common.core.mq.MQSendMessageBo;
|
import com.fastbee.common.core.mq.MessageReplyBo;
|
import com.fastbee.common.core.protocol.modbus.ModbusCode;
|
import com.fastbee.common.core.redis.RedisCache;
|
import com.fastbee.common.core.redis.RedisKeyBuilder;
|
import com.fastbee.common.enums.ThingsModelType;
|
import com.fastbee.common.utils.bean.BeanUtils;
|
import com.fastbee.iot.util.SnowflakeIdWorker;
|
import com.fastbee.mq.redischannel.producer.MessageProducer;
|
import com.fastbee.mq.service.IFunctionInvoke;
|
import com.fastbee.mq.service.IMqttMessagePublish;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.util.HashMap;
|
import java.util.Map;
|
import java.util.concurrent.TimeUnit;
|
|
/**
|
* @author gsb
|
* @date 2022/12/5 11:34
|
*/
|
@Slf4j
|
@Service
|
public class FunctionInvokeImpl implements IFunctionInvoke {
|
|
|
@Resource
|
private IMqttMessagePublish mqttMessagePublish;
|
private SnowflakeIdWorker snowflakeIdWorker = new SnowflakeIdWorker(2);
|
|
|
/**
|
* 服务调用,设备不响应
|
* @param reqDto 服务下发对象
|
* @return 消息id messageId
|
*/
|
@Override
|
public String invokeNoReply(InvokeReqDto reqDto){
|
log.debug("=>下发指令请求:[{}]",reqDto);
|
MQSendMessageBo bo = new MQSendMessageBo();
|
BeanUtils.copyBeanProp(bo,reqDto);
|
long id = snowflakeIdWorker.nextId();
|
String messageId = id+"";
|
bo.setMessageId(messageId+"");
|
bo.setType(ThingsModelType.getType(reqDto.getType()));
|
mqttMessagePublish.funcSend(bo);
|
return messageId;
|
}
|
}
|