OpenHiva::Node::CreateSubscriber
函数功能
创建订阅者。
函数原型
template <typename M> std::shared_ptr<OpenHiva::Subscriber> OpenHiva::Node::CreateSubscriber(const std::string &topicName, const std::function<void(M)> &callback, const OpenHiva::TopicOptions &topicOptions = TopicOptions())
参数说明
参数名 |
输入/输出 |
说明 |
---|---|---|
topicName |
输入 |
待订阅的Topic名称,应小于128字节。 |
callback |
输入 |
注册Subscriber的回调函数,M为消息类型。一般在收到消息后调用callback。 |
topicOptions |
输入 |
Topic属性配置,详见OpenHiva::TopicOptions类型定义。 |
返回值
返回OpenHiva::Subscriber对象,可以用来订阅消息。
使用说明
APP通过CreateSubscriber函数,订阅指定Topic的发布数据,并为数据创建指定深度的缓存队列。在该Topic的数据发布后,OpenHiva收到数据后,会在groupName所在的线程组内,调用回调函数。
注意事项
- 本接口不可重入,同步接口。
- 必须在执行完OpenHiva::Init后使用,通过OpenHiva::Node调用。
- 对于相同Topic的数据,OpenHiva保证顺序处理;对于不同Topic的数据,OpenHiva不保证处理时序。
- 对于确定性调度的Topic回调,不允许在回调中(包括回调中调用的其它函数)加锁。
- 用户在调用Hiva::Node::CreateSubscriber接口时会设置TopicOptions的成员groupName。
- M表示消息类型,必须是HivaMessage的子类。
- CreatePublisher和CreateSubscriber注册的同一Topic的消息类型应该保持一致。
- Topic数量不超过500个,全系统CreatePublisher和CreateSubscriber的数量不允许超过2048个。
- TopicName长度不允许超过128字节,首字符只能为字母、'/',其他字符只能为字母、数字、'/'、'_' 。
父主题: OpenHiva::Node接口