redis引入未完成
This commit is contained in:
@@ -43,6 +43,10 @@
|
||||
|
||||
#include "../log4cplus/log4.h"//lnk添加log4
|
||||
|
||||
//添加redis stream相关头文件
|
||||
#include "../redisstream/RedisStreamMQ.h"
|
||||
#include <QSettings>
|
||||
|
||||
using namespace std;
|
||||
|
||||
static std::once_flag g_consumer_once;
|
||||
@@ -63,6 +67,11 @@ extern std::string G_MQCONSUMER_TOPIC_RT;
|
||||
|
||||
extern std::string G_MQCONSUMER_TOPIC_TEST;
|
||||
|
||||
//消费者连接秘钥
|
||||
extern std::string G_MQCONSUMER_ACCESSKEY;
|
||||
extern std::string G_MQCONSUMER_SECRETKEY;
|
||||
extern std::string G_MQCONSUMER_CHANNEL;
|
||||
|
||||
extern std::string FRONT_INST;
|
||||
extern bool DEBUGOPEN;
|
||||
|
||||
@@ -80,10 +89,9 @@ extern int g_front_seg_index;
|
||||
extern char subdir[128];
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//消费者连接秘钥
|
||||
extern std::string G_MQCONSUMER_ACCESSKEY;
|
||||
extern std::string G_MQCONSUMER_SECRETKEY;
|
||||
extern std::string G_MQCONSUMER_CHANNEL;
|
||||
extern int G_MQ_BACKEND;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// 前向声明 RocketMQConsumer 类
|
||||
class RocketMQConsumer;
|
||||
@@ -102,11 +110,23 @@ int64_t G_APP_START_MS = []() -> int64_t {
|
||||
|
||||
int64_t G_START_SKEW_MS = 1000;
|
||||
|
||||
bool should_process_after_start(const rocketmq::MQMessageExt& msg)
|
||||
bool RocketMQ_should_process_after_start(const rocketmq::MQMessageExt& msg)
|
||||
{
|
||||
const int64_t born_ts = static_cast<int64_t>(msg.getBornTimestamp());
|
||||
return born_ts >= (G_APP_START_MS - G_START_SKEW_MS);
|
||||
}
|
||||
|
||||
bool should_process_after_start(const rocketmq::MQMessageExt& msg)
|
||||
{
|
||||
if (G_MQ_BACKEND == MQ_BACKEND_REDIS_STREAM)
|
||||
{
|
||||
return RedisStream_should_process_after_start(msg);
|
||||
}
|
||||
else
|
||||
{
|
||||
return RocketMQ_should_process_after_start(msg);
|
||||
}
|
||||
}
|
||||
///////////////////////////////
|
||||
class InternalListener;
|
||||
|
||||
@@ -419,7 +439,7 @@ void RocketMQConsumer::setConsumerMessageModel(const std::string& topic)
|
||||
RocketMQConsumer* g_consumer = NULL;
|
||||
|
||||
// 初始化消费者函数
|
||||
void InitializeConsumer(
|
||||
void RocketMQ_InitializeConsumer(
|
||||
const std::string& consumerName,
|
||||
const std::string& nameServer,
|
||||
const std::vector<Subscription>& subscriptions) // 接收多个订阅
|
||||
@@ -446,7 +466,7 @@ void InitializeConsumer(
|
||||
}
|
||||
|
||||
// 关闭并销毁消费者函数
|
||||
void ShutdownAndDestroyConsumer()
|
||||
void RocketMQ_ShutdownAndDestroyConsumer()
|
||||
{
|
||||
if (g_consumer != NULL) {
|
||||
delete g_consumer;
|
||||
@@ -455,7 +475,7 @@ void ShutdownAndDestroyConsumer()
|
||||
}
|
||||
|
||||
// 消费消息的接口函数
|
||||
void rocketmq_consumer_receive(
|
||||
void RocketMQ_rocketmq_consumer_receive(
|
||||
const std::string& consumerName,
|
||||
const std::string& nameServer,
|
||||
const std::vector<Subscription>& subscriptions) // 接收多个订阅
|
||||
@@ -844,7 +864,7 @@ private:
|
||||
RocketMQProducer* g_producer = NULL;
|
||||
|
||||
// 初始化生产者(在程序启动时调用一次)
|
||||
void InitializeProducer()
|
||||
void RocketMQ_InitializeProducer()
|
||||
{
|
||||
if (g_producer == NULL) {
|
||||
try {
|
||||
@@ -859,7 +879,7 @@ void InitializeProducer()
|
||||
}
|
||||
|
||||
// 关闭并销毁生产者(在程序结束时调用一次)
|
||||
void ShutdownAndDestroyProducer()
|
||||
void RocketMQ_ShutdownAndDestroyProducer()
|
||||
{
|
||||
if (g_producer != NULL) {
|
||||
delete g_producer;
|
||||
@@ -868,7 +888,7 @@ void ShutdownAndDestroyProducer()
|
||||
}
|
||||
|
||||
// 发送消息的接口函数
|
||||
void rocketmq_producer_send(const std::string& body,
|
||||
void RocketMQ_rocketmq_producer_send(const std::string& body,
|
||||
const std::string& topic,
|
||||
const std::string& tags,
|
||||
const std::string& keys)
|
||||
@@ -887,7 +907,102 @@ void rocketmq_producer_send(const std::string& body,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////生产者消费者切换
|
||||
void InitializeProducer()
|
||||
{
|
||||
if (G_MQ_BACKEND == MQ_BACKEND_REDIS_STREAM)
|
||||
{
|
||||
RedisStream_InitializeProducer();
|
||||
return;
|
||||
}
|
||||
|
||||
RocketMQ_InitializeProducer();
|
||||
}
|
||||
void ShutdownAndDestroyProducer()
|
||||
{
|
||||
if (G_MQ_BACKEND == MQ_BACKEND_REDIS_STREAM)
|
||||
{
|
||||
RedisStream_ShutdownAndDestroyProducer();
|
||||
return;
|
||||
}
|
||||
|
||||
RocketMQ_ShutdownAndDestroyProducer();
|
||||
}
|
||||
void rocketmq_producer_send(const std::string& body,
|
||||
const std::string& topic,
|
||||
const std::string& tags,
|
||||
const std::string& keys)
|
||||
{
|
||||
if (G_MQ_BACKEND == MQ_BACKEND_REDIS_STREAM)
|
||||
{
|
||||
RedisStream_producer_send(
|
||||
body,
|
||||
topic,
|
||||
tags,
|
||||
keys
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
RocketMQ_rocketmq_producer_send(
|
||||
body,
|
||||
topic,
|
||||
tags,
|
||||
keys
|
||||
);
|
||||
}
|
||||
void InitializeConsumer(
|
||||
const std::string& consumerName,
|
||||
const std::string& nameServer,
|
||||
const std::vector<Subscription>& subscriptions)
|
||||
{
|
||||
if (G_MQ_BACKEND == MQ_BACKEND_REDIS_STREAM)
|
||||
{
|
||||
RedisStream_InitializeConsumer(
|
||||
consumerName,
|
||||
nameServer,
|
||||
subscriptions
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
RocketMQ_InitializeConsumer(
|
||||
consumerName,
|
||||
nameServer,
|
||||
subscriptions
|
||||
);
|
||||
}
|
||||
void ShutdownAndDestroyConsumer()
|
||||
{
|
||||
if (G_MQ_BACKEND == MQ_BACKEND_REDIS_STREAM)
|
||||
{
|
||||
RedisStream_ShutdownAndDestroyConsumer();
|
||||
return;
|
||||
}
|
||||
|
||||
RocketMQ_ShutdownAndDestroyConsumer();
|
||||
}
|
||||
void rocketmq_consumer_receive(
|
||||
const std::string& consumerName,
|
||||
const std::string& nameServer,
|
||||
const std::vector<Subscription>& subscriptions)
|
||||
{
|
||||
if (G_MQ_BACKEND == MQ_BACKEND_REDIS_STREAM)
|
||||
{
|
||||
RedisStream_consumer_receive(
|
||||
consumerName,
|
||||
nameServer,
|
||||
subscriptions
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
RocketMQ_rocketmq_consumer_receive(
|
||||
consumerName,
|
||||
nameServer,
|
||||
subscriptions
|
||||
);
|
||||
}
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/*
|
||||
// producer_send0测试用
|
||||
|
||||
@@ -376,6 +376,9 @@ int G_LOG_RATE_KEEP_BURST_MS = 1000; // 间隔 >= 1000ms,按二级策略
|
||||
int G_LOG_RATE_KEEP_BURST_COUNT = 60; // 二级保留前60条
|
||||
int G_LOG_RATE_KEEP_HIGHFREQ_COUNT = 10; // 高频保留前10条
|
||||
|
||||
//添加底层队列开关
|
||||
int G_MQ_BACKEND = 0; // 0-默认RocketMQ,1-Redis Stream
|
||||
|
||||
//lnk20250115添加台账锁
|
||||
extern pthread_mutex_t mtx;
|
||||
|
||||
@@ -649,6 +652,20 @@ void init_config() {
|
||||
qDebug() << "Read UDS_DOWNLOAD_URL:" << UDS_DOWNLOAD_URL << endl;
|
||||
|
||||
/*添加rocketmq的解析10-9 */////////////////////////////////////////////////////////////////
|
||||
|
||||
ba = settings.value("RocketMq/Backend", "rocketmq").toString().toLatin1();
|
||||
std::string mq_backend = ba.data();
|
||||
|
||||
if (mq_backend == "redis" || mq_backend == "redisstream" || mq_backend == "1") {
|
||||
G_MQ_BACKEND = MQ_BACKEND_REDIS_STREAM;
|
||||
} else {
|
||||
G_MQ_BACKEND = MQ_BACKEND_ROCKETMQ;
|
||||
}
|
||||
|
||||
std::cout << "Read RocketMq/Backend:" << mq_backend
|
||||
<< ", G_MQ_BACKEND:" << G_MQ_BACKEND
|
||||
<< std::endl;
|
||||
|
||||
//生产者
|
||||
ba = settings.value("RocketMq/producer", "").toString().toLatin1();
|
||||
G_ROCKETMQ_PRODUCER = strdup(ba.data());
|
||||
|
||||
Reference in New Issue
Block a user