和服务端的消费者实现方式一模一样,只不过服务端的消费者的回调函数是把消息封装成响应并发送,固定都是这个动作,而客户端消费者回调是用来处理消息,是用户自己设置的。
cpp
#pragma once
#include "../common/Log.hpp"
#include "../common/message.pb.h"
#include <functional>
#include <memory>
#include <atomic>
#include <mutex>
#include <vector>
#include <unordered_map>
namespace ns_consumer
{
using namespace ns_log;
struct Consumer;
using ConsumerPtr = std::shared_ptr<Consumer>;
using ConsumerCallback_t = std::function<void(const ns_data::Message& msg)>;
struct Consumer
{
std::string _id;
std::string _qname;
ConsumerCallback_t _callback;
bool _autoAck;
Consumer(const std::string id, const std::string &qname, ConsumerCallback_t callback, bool autoAck)
: _id(id),
_qname(qname),
_callback(callback),
_autoAck(autoAck)
{
}
};
};