redis引入未完成

This commit is contained in:
lnk
2026-06-24 16:37:32 +08:00
parent c221102a5a
commit ae911b46e5
10 changed files with 1312 additions and 42 deletions

View File

@@ -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测试用