在这种情况下,我应该使用哪种 Erlang 行为,即 gen_server 或 gen_fsm

Which Erlang behaviour i.e. gen_server or gen_fsm should I use in this case

我正在开发一种查询 SOAP Web 服务以获取特定事务的解决方案。一旦检索到,这些交易将被保存在数据库中,之后调用回调 url 将一些数据发送到另一台服务器。您将如何最好地设计解决此问题的方案。我的困惑点是应该使用 gen_server 还是 gen_fsm,如果是的话,解决方案的哪个组件去哪里,即如果 gen_server 什么任务去服务器,哪个任务去客户端。

想想您的系统中可以并行执行哪些任务。 SOAP 查询可以并行完成吗?它有意义吗?再次查询 SOAP 时是否可以将事务写入数据库?数据到另一台服务器是应该在交易写入数据库后发送,还是可以同时发送?

一旦你知道了这些答案,你就可以建立你的管道了。一个例子是:

  • 一个定期查询 SOAP 服务并为每批交易调用函数的进程。
  • 在这个函数中,启动了两个进程;一种将事务写入数据库,另一种将数据发送到服务器。这些进程相互独立。

这只是一个示例,根据您的要求,您可能需要以另一种方式构建内容。

一般来说,这些进程都可以是 gen_servers,因为其中 none 具有任何明确的状态。事实上,两个工作进程根本不必 gen_servers,因为它们只执行一项任务,然后就死掉了。在那种情况下使用 gen_server 就太过分了。