add recall reply
This commit is contained in:
@@ -77,7 +77,7 @@ extern std::vector<std::string> TESTARRAY;
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////外部文件函数声明
|
||||
|
||||
extern void execute_bash(std::string fun,int process_num,std::string type);
|
||||
extern int recall_json_handle(const std::string& jstr);
|
||||
extern int recall_json_handle_from_mq(const std::string& body);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////本文件函数向前声明
|
||||
|
||||
@@ -373,62 +373,6 @@ std::string find_guid_index_from_dev_id(const std::string& dev_id) {
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////回调函数的json处理
|
||||
|
||||
std::string parseJsonMessageRC(const std::string& inputJson) {
|
||||
// 解析输入 JSON 字符串
|
||||
json root;
|
||||
try {
|
||||
root = json::parse(inputJson);
|
||||
} catch (const std::exception& e) {
|
||||
std::cerr << "Error parsing JSON: " << e.what() << std::endl;
|
||||
return "";
|
||||
}
|
||||
|
||||
// 提取 "messageBody" 部分(它是一个字符串)
|
||||
if (!root.contains("messageBody") || !root["messageBody"].is_string()) {
|
||||
std::cerr << "'messageBody' is missing or is not a string" << std::endl;
|
||||
return "";
|
||||
}
|
||||
|
||||
std::string messageBodyStr = root["messageBody"].get<std::string>();
|
||||
if (messageBodyStr.empty()) {
|
||||
std::cerr << "'messageBody' is empty" << std::endl;
|
||||
return "";
|
||||
}
|
||||
|
||||
// 解析 messageBody 中的 JSON 字符串
|
||||
json messageBody;
|
||||
try {
|
||||
messageBody = json::parse(messageBodyStr);
|
||||
} catch (const std::exception& e) {
|
||||
std::cerr << "Failed to parse 'messageBody' JSON: " << e.what() << std::endl;
|
||||
return "";
|
||||
}
|
||||
|
||||
// 提取 "guid" 部分
|
||||
if (!messageBody.contains("guid") || !messageBody["guid"].is_string()) {
|
||||
std::cerr << "'guid' is missing or is not a string" << std::endl;
|
||||
return "";
|
||||
}
|
||||
std::string guid = messageBody["guid"].get<std::string>();
|
||||
|
||||
// 发送 guid 回复
|
||||
send_reply_to_queue(guid, "1", "收到补招指令");
|
||||
|
||||
// 提取 "data" 部分
|
||||
if (!messageBody.contains("data") || !messageBody["data"].is_array()) {
|
||||
std::cerr << "'data' is missing or is not an array" << std::endl;
|
||||
return "";
|
||||
}
|
||||
|
||||
// 返回 "data" 数组的字符串形式
|
||||
try {
|
||||
return messageBody["data"].dump(); // 默认带缩进;如需去除缩进:dump(-1)
|
||||
} catch (const std::exception& e) {
|
||||
std::cerr << "Error converting 'data' to string: " << e.what() << std::endl;
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
bool parseJsonMessageRT(const std::string& body,std::string& devSeries,ushort& line,bool& realData,bool& soeData,int& limit){
|
||||
json root;
|
||||
try {
|
||||
@@ -873,6 +817,17 @@ rocketmq::ConsumeStatus myMessageCallbackrtdata(const rocketmq::MQMessageExt& ms
|
||||
// 加锁访问台账
|
||||
if( !devid.empty() && line > 0){
|
||||
//不再使用文件触发方式,直接调用接口向终端发起请求
|
||||
|
||||
//不注册guid,直接将请求指令下发装置,排队处理
|
||||
|
||||
//添加在线判断
|
||||
if (ClientManager::instance().get_dev_status(devid) != 1) {
|
||||
std::cout << "devid对应装置不在线: " << devid << std::endl;
|
||||
// 记录日志不响应 web 端
|
||||
DIY_ERRORLOG("process","【ERROR】前置的%d号进程处理topic:%s_%s的补招触发消息失败,装置%s不在线", g_front_seg_index,FRONT_INST.c_str(), G_MQCONSUMER_TOPIC_RT.c_str(),devid.c_str());
|
||||
return rocketmq::CONSUME_SUCCESS;
|
||||
}
|
||||
|
||||
ClientManager::instance().set_real_state_count(devid, 60, line);//一秒询问一次,询问60次,下一次同一个测点调用的话就会刷新
|
||||
}
|
||||
else{
|
||||
@@ -1002,17 +957,7 @@ rocketmq::ConsumeStatus myMessageCallbackrecall(const rocketmq::MQMessageExt& ms
|
||||
}
|
||||
|
||||
// 解析 JSON 字符串
|
||||
std::string result = parseJsonMessageRC(body); // 使用 std::string 接收解析结果
|
||||
std::cout << "parseJsonMessageRC: " << result << std::endl;
|
||||
|
||||
if (!result.empty()) {
|
||||
|
||||
recall_json_handle(result);//不再使用文件补招方式
|
||||
|
||||
} else {
|
||||
std::cerr << "recall data is NULL." << std::endl;
|
||||
DIY_ERRORLOG("process","【ERROR】前置的%d号进程处理topic:%s_%s的补招触发消息失败,消息的json结构不正确", g_front_seg_index,FRONT_INST.c_str(), G_MQCONSUMER_TOPIC_RC.c_str());
|
||||
}
|
||||
recall_json_handle_from_mq(body);//不再使用文件补招方式
|
||||
|
||||
return rocketmq::CONSUME_SUCCESS;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user