在这种情况下,我应该使用哪种 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
就太过分了。
我正在开发一种查询 SOAP Web 服务以获取特定事务的解决方案。一旦检索到,这些交易将被保存在数据库中,之后调用回调 url 将一些数据发送到另一台服务器。您将如何最好地设计解决此问题的方案。我的困惑点是应该使用 gen_server 还是 gen_fsm,如果是的话,解决方案的哪个组件去哪里,即如果 gen_server 什么任务去服务器,哪个任务去客户端。
想想您的系统中可以并行执行哪些任务。 SOAP 查询可以并行完成吗?它有意义吗?再次查询 SOAP 时是否可以将事务写入数据库?数据到另一台服务器是应该在交易写入数据库后发送,还是可以同时发送?
一旦你知道了这些答案,你就可以建立你的管道了。一个例子是:
- 一个定期查询 SOAP 服务并为每批交易调用函数的进程。
- 在这个函数中,启动了两个进程;一种将事务写入数据库,另一种将数据发送到服务器。这些进程相互独立。
这只是一个示例,根据您的要求,您可能需要以另一种方式构建内容。
一般来说,这些进程都可以是 gen_servers
,因为其中 none 具有任何明确的状态。事实上,两个工作进程根本不必 gen_servers
,因为它们只执行一项任务,然后就死掉了。在那种情况下使用 gen_server
就太过分了。