问题描述
假设我们有基于Tarantool墨盒的服务,该服务存储用户发表的帖子。当用户发布新帖子时,它将被插入到相应的空间。同时在分片队列notify_friends
中添加了任务,用于通知用户朋友新帖子。
问题与管notify_friends
的创建有关。最初,我计划在服务角色的init()
方法中执行此操作,但是它会导致错误,因为管道创建会修改clusterwide-config,并且在运行init()
时会对其进行更改。
我可以尝试在第一个任务添加请求时创建试管,但是不确定这是否是最佳方法。
解决方法
我可以通过2种方式使用它:
- 根据您的建议在第一个请求上创建试管。没什么不好的。
- 如果要提前进行,请在init函数中创建光纤,如果初始化后不存在,则在初始化10秒后尝试创建该光纤。您可以找出所有具有sharded_queue存储的实例,并仅在第一个实例上运行光纤(按实例URI的字母顺序排序)。
您可以将其置于应用程序的“默认配置”。
在这里检查: How to implement default config section for a custom Tarantool Cartridge role?