I am developing a solution that queries a SOAP web service for certain transactions. Once retrieved, these transactions are meant to be saved in a database after which a callback url is invoked to send some data to another server. How would you best architect a solution to this problem. My point of confusion is whether gen_server or gen_fsm should be used and if so which component of the solution goes where i.e. if gen_server what task goes to the server which task goes to the client.
Which Erlang behaviour i.e. gen_server or gen_fsm should I use in this case
266 views Asked by Waliaula Makokha At
1
There are 1 answers
Related Questions in ERLANG
- Using gleam, cannot import 'gleam/otp/process'
- Zig Concurrency Vs Erlang Concurrency, is Zig less efficient than Erlang?
- Creaating a new Key Value dict from previous dict
- How to execute an exit function before closing rebar3 shell?
- rebar3 does not compile anything in `src` directory
- Ejabberd Migration from 23 to 24
- How to use compiled erlang modules in an elixir project?
- ejabberd_sql:handle_reconnect/2:491 odbc connection failed ejabberd
- Lisp Flavored Erlang: Can't find include lib include/ltest-macros.lfe
- Signing key for RabbitMQ
- Rabbitmq fails to start and getting Erlang eaacces error
- Erlang: binary_to_term explanation
- How to extend emqx clientInfo to get more fields during HTTP Authorization
- Transforming `erl_parse:abstract_form()` to `erl_syntax:syntaxTree()`
- Who is the sender of Erlang's trace messages and what can I assume based on it?
Related Questions in ERLANG-OTP
- Using gleam, cannot import 'gleam/otp/process'
- How to execute an exit function before closing rebar3 shell?
- Rabbitmq fails to start and getting Erlang eaacces error
- Snmp_ex2_simple_standard_test throws an error “failed retrieving agent data”
- How can we load sys.config in slave nodes in Erlang?
- Supervision strategy of a separately started process
- How do I read from sys.config in my ejabberd release?
- Using data from a supervised processes to start another
- Is there any additional step I need in order to debug RabbitMQ locally using VsCode and Erlang LS extension?
- Is there a better way to write a timer in erlang otp 22
- I'm trying to run the chess timer example found in the wxErlang - Getting Started booklet written by Arif Ishaq in 2017
- Model based property failed after few tests
- Timeout issue facing on creating new shortcode Erlang
- Erlang using action id, wait function is not working
- How supervisor behavior in Elixir Umbrella Apps: Managing Failures Across Applications
Related Questions in GEN-SERVER
- How can i realise queue system in message broker on Elixir using genServer?
- {noproc,{gen_server{call.... Error in simple rebar3/Erlang application with a gen_server
- Issue with running a compiled rebar3 erlang application with erl -pa
- Can the GenServer `handle_continue` callback directly be invoked from another process?
- What would be an idiomatic and semantic way to make integration tests on this Elixir GenServer?
- DynamicSupervisor.start_child(...) ----> error > already started
- How to create an Elixir GenServer timed event at 12am every night
- Why does gen_server:reply/2 work in some instances while causing timeouts in others
- Is there a way to make_ref() for spawned processes in erlang?
- Pop functionality in stack server with OTP (Elixir)
- Elixir - Catching :enetunreach and :ehostunreach errors
- Using Interceptor to add logging to GenServer
- How to launch this Supervised GenServer as application
- Why does this Supervisor not start the Genserver?
- Elixir Supervisor "supervise" and "worker" deprecation errors
Related Questions in GEN-FSM
- Converting Learn You Some Erlang tutorial from gen_fsm to gen_statem
- erlang:send_after message delay
- Using more than one erlang behaviour
- How can I know when it's the last cycle of my process restarted by the supervisor in erlang
- Which Erlang behaviour i.e. gen_server or gen_fsm should I use in this case
- Pass control from one gen_fsm to another
- Erlang - Exception exit on supervisor and gen_fsm
- Can i use "sender" in Akka FSM code?
- handle illegality events while not clearing timeout in gen_fsm behaviour
- Ensure that gen_fsm/gen_server process exists while sending a message
- Change gen_fsm state to a function in a different module
- eunit test for timeout
- how to transfer gen_server/gen_fsm from node to node
- gen_fsm erlang timeout
- Terminate gen_fsm if no event come
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Think about what tasks can happen in parallel in your system. Can the SOAP queries be done in parallel, and does it make sense? Can the transactions be written to the database while SOAP is being queried again? Is the data to another server supposed to be sent after the transactions are written to the database, or can it be done at the same time?
Once you know these answers, you can build your pipeline. One example would be:
This is just one example, and depending on your requirements, you might have to structure things another way.
In general, these processes can all be
gen_serversas none of them have any clear states. In fact, the two worker processes doesn't have to begen_serversat all, since they just do one task and then die. Using agen_serverin that case would be overkill.