我正在构建一个 OTP 应用程序,该应用程序遵循类似于trapexit上描述的模式,其中我实现了一个非阻塞 gen_servergen_server:call/3
用于启动与后端的事务并将事务 id 的映射存储到From
pid。当 gen_server 收到来自后端的消息时,它会提取事务 id 并使用此映射来查找正确的 pid,然后将消息转发到该 pid。
在 trapexit 示例中,此映射是使用 ets 实现的,但是我发现让 gen_server 的状态包含具有这些映射的 dict 是一个非常自然的解决方案。
对于我的特定用例,映射最多包含 200 个条目。
推荐哪种实施方式?
提前致谢!