Sending Messages to Workers

Joseph Lloyd josarlo84@REDACTED
Mon Nov 15 23:43:39 CET 2021


What libraries implement this already?  Could a supervisor do that or is
that a bad paradigm?

On Mon, Nov 15, 2021 at 2:07 PM Attila Rajmund Nohl <attila.r.nohl@REDACTED>

> Joseph Lloyd <josarlo84@REDACTED> ezt írta (időpont: 2021. nov. 15., H,
> 20:08):
> >
> > I am new to Erlang and using mailing lists, so please forgive my poor
> etiquette, and feel free to correct me.
> >
> > Background:
> > I am prototyping a simple application using Erlang.  The application has
> a manager that reads messages from a socket (UDP in this case) and then
> sends the message (based on a destination byte) to a handler process.
> There is a possibility of 2^n handler processes. The number is determined
> dynamically at run time based on user input.
> >
> > A handler process is created when the manager process receives a message
> to create the handler. create/3 is part of the handler module's API and is
> essentially a wrapper around handler_sup:start_child/2.  When the manager
> process receives a packet, it sends a message containing the packet to the
> appropriate handler process.  The manager process uses an ets table for
> mapping destinations to handler pids.
> >
> > I implemented the handlers as gen_servers and created a handler_sup that
> will restart the handler processes whenever they go down.
> >
> > Problem:
> > If a handler process goes down, the destination/pid mapping in the
> manager module becomes invalid.  The handler supervisor will generate a new
> process, but the manager doesn't know the pid for the replacement process.
> >
> > Question:
> > What is the proper way to design this in Erlang?  Do I put the
> destination/pid mapping in the handler_sup module and query that whenever
> the manager wants to send the message? Or does that violate supervisors
> only being supervisors paradigm?
> One way is to have a process that monitors your workers and if it
> receives a DOWN signal, removes the corresponding entry from the ETS
> table. Of course, there are libraries that already implement this.

Joseph Lloyd
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the erlang-questions mailing list