Skip to content

消息队列回调类型 - MessageQueueCallback

类型简介

MessageQueueCallback 是消息队列消费回调函数类型,用于接收消息并获取确认令牌。

回调定义

c
typedef void(OLA_CALL_TYPE* MessageQueueCallback)(int64_t consumer, char* topic,
                                                  int64_t data_ptr, int32_t data_len,
                                                  int32_t is_text, int64_t ack_token);

参数说明

参数名类型说明
consumer长整数型消费者句柄。
topic字符串主题名(队列名)。
data_ptr长整数型数据指针(仅回调期间有效)。
data_len整数型数据长度(字节)。
is_text整数型是否文本:1=文本0=字节流
ack_token长整数型确认令牌,>0 时可 MessageQueueAck/Nack

使用示例

c
void OLA_CALL_TYPE OnQueueMessage(int64_t consumer, char* topic,
                                  int64_t data_ptr, int32_t data_len,
                                  int32_t is_text, int64_t ack_token) {
    if (is_text == 1) {
        printf("[Queue] %s => %.*s\n", topic, data_len, (char*)data_ptr);
    } else {
        printf("[Queue] %s => %d bytes\n", topic, data_len);
    }

    if (ack_token > 0) {
        MessageQueueAck(instance, consumer, ack_token);
    }
}

注意事项

项目说明
data_ptr 仅在回调期间有效data_ptr 仅在回调期间有效,异步处理前请先拷贝。
每条消息都进行 Ack 或 Nack建议每条消息都进行 Ack 或 Nack,避免消息滞留。