1

假设我们有基于 Tarantool Cartridge 的服务,它存储用户发布的帖子。当用户发布新帖子时,它会被插入到相应的空间中。同时在分片队列管notify_friends中添加了通知用户朋友新帖子的任务。

问题是关于创建 tube notify_friends。最初我计划在服务角色的方法中这样做,但它会导致错误,因为管创建修改了 clusterwide-config 并且它在运行init()时被更改。init()我可以尝试在第一个任务添加请求时创建管,但不确定这是否是最好的方法。

4

2 回答 2

1

您可以将其放入应用程序的“默认配置”中。

在此处查看: 如何为自定义 Tarantool Cartridge 角色实现默认配置部分?

于 2020-10-01T13:13:49.143 回答
1

我有两种方法:

  1. 按照您的建议在第一个请求上创建管。不会有什么不好的事情发生。
  2. 如果你想提前做——在初始化函数中创建一个纤程,如果管子不存在,它将在初始化后 10 秒后尝试创建管子。您可以找出所有具有 sharded_queue 存储的实例,并仅在第一个实例上运行纤程(按实例 URI 的字母顺序排序)。
于 2020-09-27T19:14:52.283 回答