不使用存储插件进行zenoh 存储扩展开发

以前简单说过zenoh 内部存储插件的处理机制,以下说明下如何直接基于zenoh 语言sdk 进行存储扩展开发

参考图

内部机制说明:对于写入put操作,我们基于ssubscriber 订阅特定的key信息,之后写入到存储中,对于get 请求,我们使用queryable 扩展定义callback 进行get 处理,底层数据我们可以使用key value 存储(redis,mongo,db,rest 接口都是可以的)

  • 参考get 示例代码
import  time
import zenoh
conf = zenoh.Config.from_json5("""
                               {"id":"222223","mode":   "client","connect":{"endpoints":["tcp/127.0.0.1:7447"]}}
                               """)
def callback(qeury:zenoh.Query):    
    print("('{}')".format(qeury.key_expr))
    qeury.reply(key_expr=qeury.key_expr, payload="Hello from Python!",encoding="text/plain")
session =   zenoh.open(conf)
# queryable处理特定key expression 的callback 
session.declare_queryable("demo/**",callback)

while   True:
    time.sleep(1.0)

说明

以上只是一个简单的说明,将存储插件与zenoh router 部署在一起的好处是all-in-one 可靠性好一些,基于独立服务的模式我们灵活性比较好,可以使用各种支持的语言开发

参考资料

https://github.com/eclipse-zenoh/zenoh

posted on 2024-12-31 08:00  荣锋亮  阅读(4)  评论(0编辑  收藏  举报

导航