我正在编写一个Elixir应用程序,其中一些访问数据库的进程将为插入的记录生成唯一标识符.
我正在使用CUID库,它将让我以下列方式生成一个id:
{:ok, pid} = Cuid.start_link
Cuid.generate(pid) # => ch72gsb320000udocl363eofy
Run Code Online (Sandbox Code Playgroud)
这是我的应用程序的设置方式
每次创建一个新的Cuid进程对我来说都是错误的,特别是考虑到Cuid lib在其状态下维护一个计数器.
我的应用程序中的不同进程如何发送Cuid.generate到同一进程?
谢谢!
您可以在应用程序中将其作为受监督和注册的工作人员启动:
defmodule MyApp do
use Application
def start(_type, _args) do
import Supervisor.Spec, warn: false
children = [
# Start the endpoint when the application starts
supervisor(MyApp.Endpoint, []),
# Start the Ecto repository
worker(MyApp.Repo, []),
worker(Cuid, [], [name: :cuid])
]
opts = [strategy: :one_for_one, name: MyApp.Supervisor]
Supervisor.start_link(children, opts)
end
...
end
Run Code Online (Sandbox Code Playgroud)
然后在您的应用程序中使用它,如:
cuid = Cuid.generate(:cuid)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
242 次 |
| 最近记录: |