昇腾社区首页
中文
注册

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字节,首字符只能为字母、'/',其他字符只能为字母、数字、'/'、'_' 。