不使用存储插件进行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 可靠性好一些,基于独立服务的模式我们灵活性比较好,可以使用各种支持的语言开发