Files
microser/include/rocketmq/CPushConsumer.h
2025-01-16 16:17:01 +08:00

175 lines
9.7 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef __C_PUSH_CONSUMER_H__
#define __C_PUSH_CONSUMER_H__
#include "CCommon.h"
#include "CMessageExt.h"
#ifdef __cplusplus
extern "C" {
#endif
// typedef struct _CConsumer_ _CConsumer;
typedef struct CPushConsumer CPushConsumer;
typedef enum E_CConsumeStatus { E_CONSUME_SUCCESS = 0, E_RECONSUME_LATER = 1 } CConsumeStatus;
typedef int (*MessageCallBack)(CPushConsumer*, CMessageExt*);
ROCKETMQCLIENT_API CPushConsumer* CreatePushConsumer(const char* groupId);
// 创建一个消费者实例并返回指向该实例的指针。
// 参数groupId - 消费者所属的消费者组ID。
// 必要性是必须的创建消费者实例时必须提供消费者组ID。
ROCKETMQCLIENT_API int DestroyPushConsumer(CPushConsumer* consumer);
// 销毁指定的消费者实例。
// 参数consumer - 需要销毁的消费者实例。
// 必要性:在消费者不再需要时调用,以释放资源。
ROCKETMQCLIENT_API int StartPushConsumer(CPushConsumer* consumer);
// 启动消费者,开始消费消息。
// 参数consumer - 要启动的消费者实例。
// 必要性:启动消费者并开始接收消息是必须的。
ROCKETMQCLIENT_API int ShutdownPushConsumer(CPushConsumer* consumer);
// 关闭消费者,停止消费消息。
// 参数consumer - 要关闭的消费者实例。
// 必要性:在应用程序结束时,必须调用该函数来安全地关闭消费者。
ROCKETMQCLIENT_API const char* ShowPushConsumerVersion(CPushConsumer* consumer);
// 获取当前消费者实例的版本信息。
// 参数consumer - 需要获取版本信息的消费者实例。
// 必要性:不是必须的,但可以用于调试和确认消费者版本。
ROCKETMQCLIENT_API int SetPushConsumerGroupID(CPushConsumer* consumer, const char* groupId);
// 设置消费者的消费者组ID。
// 参数consumer - 消费者实例groupId - 消费者组ID。
// 必要性用于设置消费者的消费者组ID必须设置。
ROCKETMQCLIENT_API const char* GetPushConsumerGroupID(CPushConsumer* consumer);
// 获取消费者实例的消费者组ID。
// 参数consumer - 消费者实例。
// 必要性不是必须的但可以用于检查当前的消费者组ID。
ROCKETMQCLIENT_API int SetPushConsumerNameServerAddress(CPushConsumer* consumer, const char* namesrv);
// 设置消费者的 NameServer 地址。
// 参数consumer - 消费者实例namesrv - NameServer 地址。
// 必要性:必须配置,以便消费者能够连接到 RocketMQ NameServer。
ROCKETMQCLIENT_API int SetPushConsumerNameServerDomain(CPushConsumer* consumer, const char* domain);
// 设置消费者的 NameServer 域名。
// 参数consumer - 消费者实例domain - NameServer 域名。
// 必要性:不是必须的,通常会使用 SetPushConsumerNameServerAddress 设置 IP 地址。
ROCKETMQCLIENT_API int Subscribe(CPushConsumer* consumer, const char* topic, const char* expression);
// 订阅一个指定的 topic 和 tag。
// 参数consumer - 消费者实例topic - 消息主题expression - 消息标签(可以为空,表示订阅所有标签)。
// 必要性:必须配置消费者要订阅的 topic。
ROCKETMQCLIENT_API int RegisterMessageCallbackOrderly(CPushConsumer* consumer, MessageCallBack pCallback);
// 注册顺序消息的回调函数。
// 参数consumer - 消费者实例pCallback - 消息回调函数。
// 必要性:如果需要顺序消费消息,则需要使用此函数注册顺序消息回调。
ROCKETMQCLIENT_API int RegisterMessageCallback(CPushConsumer* consumer, MessageCallBack pCallback);
// 注册异步消息的回调函数。
// 参数consumer - 消费者实例pCallback - 消息回调函数。
// 必要性:必须配置回调函数,以便消费者能够处理收到的消息。
ROCKETMQCLIENT_API int UnregisterMessageCallbackOrderly(CPushConsumer* consumer);
// 注销顺序消息的回调函数。
// 参数consumer - 消费者实例。
// 必要性:不是必须的,只有在不再需要顺序消息时调用。
ROCKETMQCLIENT_API int UnregisterMessageCallback(CPushConsumer* consumer);
// 注销异步消息的回调函数。
// 参数consumer - 消费者实例。
// 必要性:不是必须的,只有在不再需要处理消息时调用。
ROCKETMQCLIENT_API int SetPushConsumerThreadCount(CPushConsumer* consumer, int threadCount);
// 设置消费者的线程数量。
// 参数consumer - 消费者实例threadCount - 消费者线程数量。
// 必要性用于控制消费者处理消息的并发度。如果不设置默认值通常为1。
ROCKETMQCLIENT_API int SetPushConsumerMessageBatchMaxSize(CPushConsumer* consumer, int batchSize);
// 设置消费者最大批量消息大小。
// 参数consumer - 消费者实例batchSize - 最大批量消息大小。
// 必要性:不是必须的,只有在需要调整消息消费的批量大小时才使用。
ROCKETMQCLIENT_API int SetPushConsumerInstanceName(CPushConsumer* consumer, const char* instanceName);
// 设置消费者实例名称。
// 参数consumer - 消费者实例instanceName - 消费者实例名称。
// 必要性:不是必须的,可以为空,默认使用系统生成的实例名。
ROCKETMQCLIENT_API int SetPushConsumerSessionCredentials(CPushConsumer* consumer,
const char* accessKey,
const char* secretKey,
const char* channel);
// 设置消费者的身份验证信息。
// 参数consumer - 消费者实例accessKey - 访问密钥secretKey - 密钥channel - 渠道。
// 必要性在需要身份验证的环境下如阿里云RocketMQ此项配置是必须的。
// 设置消费者日志文件路径
// 功能:设置日志文件的存储路径。消费者在运行时会将日志信息写入该路径指定的文件。
// 必要性:日志路径配置有助于在生产环境中追踪和调试消费者的行为,记录日志是运维管理中的重要环节。
ROCKETMQCLIENT_API int SetPushConsumerLogPath(CPushConsumer* consumer, const char* logPath);
// 设置日志文件的数量和每个文件的最大大小
// 功能:设置日志文件的数量和每个日志文件的最大大小。超过最大大小时会创建新日志文件。
// 必要性:控制日志文件的数量和大小有助于防止日志文件过大,占用过多磁盘空间。对于高频消息消费的场景,合理配置日志文件大小和数量至关重要。
ROCKETMQCLIENT_API int SetPushConsumerLogFileNumAndSize(CPushConsumer* consumer, int fileNum, long fileSize);
// 设置消费者的日志级别
// 功能:设置消费者的日志级别(如 DEBUG, INFO, WARN, ERROR 等),控制输出的日志详细程度。
// 必要性:日志级别配置可以帮助调节日志的详细程度,根据环境不同选择适当的日志级别(例如,生产环境使用 ERROR 级别,开发环境使用 DEBUG 级别)。
ROCKETMQCLIENT_API int SetPushConsumerLogLevel(CPushConsumer* consumer, CLogLevel level);
// 设置消息模型(广播模式或集群模式)
// 功能:设置消费者的消息消费模型。广播模式(`CMessageModel::BROADCASTING`)会将消息推送到所有消费者,而集群模式(`CMessageModel::CLUSTERING`)则只会将消息推送到一个消费者。
// 必要性:选择消息模型对消息消费的行为有直接影响,集群模式适用于负载均衡,而广播模式适用于所有消费者都需要接收消息的场景。
ROCKETMQCLIENT_API int SetPushConsumerMessageModel(CPushConsumer* consumer, CMessageModel messageModel);
// 设置消费者最大缓存消息大小(以字节为单位)
// 功能:设置消费者最大缓存消息的大小。当缓存达到此大小时,消费者会停止消费,直到缓存被处理并清空。
// 必要性:此配置对于高吞吐量场景非常重要,它可以防止消费者在消息积压时出现内存溢出,保证消费者稳定运行。
ROCKETMQCLIENT_API int SetPushConsumerMaxCacheMessageSize(CPushConsumer* consumer, int maxCacheSize);
// 设置消费者最大缓存消息大小(以 MB 为单位)
// 功能:与 `SetPushConsumerMaxCacheMessageSize` 类似,不过该参数以 MB 为单位,设置最大缓存消息的大小。
// 必要性:提供 MB 级别的配置对于一些需要调整内存和消息缓存的应用场景,能够更加精细地控制内存使用情况。
ROCKETMQCLIENT_API int SetPushConsumerMaxCacheMessageSizeInMb(CPushConsumer* consumer, int maxCacheSizeInMb);
// 设置消息追踪模型
// 功能:设置消息的追踪模式。开启追踪会记录消费者的消费信息,帮助开发者分析消息的流转和消费情况。
// 必要性:对于消息的追踪和监控至关重要,尤其在故障排查和性能优化中,可以通过追踪记录分析消费者的消息处理状态。
ROCKETMQCLIENT_API int SetPushConsumerMessageTrace(CPushConsumer* consumer, CTraceModel openTrace);
#ifdef __cplusplus
}
#endif
#endif //__C_PUSH_CONSUMER_H__