如何以正确的方式创建分片队列管?

How to create sharded-queue tube the right way?

假设我们有基于 Tarantool Cartridge 的服务,它存储 post 用户制作的内容。当用户创建一个新的 post 时,它被插入到相应的 space 中。同时在 sharded-queue tube notify_friends 中添加了通知用户朋友新 post.

的任务

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

我有两种方法:

  1. 按照您的建议在第一个请求上创建管。不会有什么不好的事情发生。
  2. 如果您想提前执行 - 在 init 函数中创建一个 fiber,如果管不存在,它将在初始化后 10 秒后尝试创建管。您可以计算出所有具有 sharded_queue 存储空间的实例,并且 运行 仅在第一个实例上有纤程(按实例 URI 的字母顺序排序)。

您可以将其设置为应用程序的“默认配置”。

在这里查看: