NAME
   Message::Passing::PSGI - ALPHA QUALITY PSGI adaptor for Message::Passing

SYNOPSIS
       # Run the server - note that the -e has to all be on one line!
       plackup -E production -s Twiggy -MPlack::App::Message::Passing -e'Plack::App::Message::Passing->new(return_address => "tcp://127.0.0.1:5555", send_address => "tcp://127.0.0.1:5556")->to_app'

       # Run your app with the handler
       plackup -E production -s Message::Passing testapp.psgi --host 127.0.0.1 --port 5556

       # Browse to:
       http://localhost:5000/

DESCRIPTION
   ALPHA QUALITY EXPERIMENT - YOU HAVE BEEN WARNED!

   This module implements a mongrel2 like strategy for web handlers, using
   Message::Passing::ZeroMQ.

WHY
   Because I could! It's a useful experiment to prove that Message::Passing
   can be used for things entirely unlike my initial goals.

 NO, REALLY?
   Theoretically, this is quite an interesting model - as you've totally
   split the front end connection acceptance and the back end request
   handling, you can do things which are harder in other server
   environments trivially.

   Examples of things that 'just work' include:

   Adding more handler processes
       Totally dynamic, run as many as you want

   Adding handler processes on other servers
       As long as your send/return sockets are bound to a host that's
       network accessible, you can spin up handlers wherever you want.

   Upgrade the application in production
       You can spin up a new version, verify it appears to be working
       correctly etc before shutting down the old version

   Profile the application in production
       Just run a handler with NYTProf..

   NOTE: The properties above _do not_ exist in the current code - you will
   drop requests in-flight if you shut handlers down!! (Patches to fix this
   should not be that hard, and would be welcome if anyone is interested)

   If you're actually interested in using this in production, I'd recommend
   you look at the real mongrel2, and Plack::Handler::Mongrel2.

BUGS
   Many, and varied. Please do not try to run this in production ;_)

   Issues include:

   Large responses will use SEVERAL times the response length in RAM
   Requests never timeout
   App Handler crashes / restarts will lost in-flight requests.
   Quite probably leaks RAM.
       This has not been tested, which means I quite probably got it wrong
       somewhere ;)

SEE ALSO
   Plack::App::Message::Passing.
   Plack::Handler::Message::Passing.
   mongrel2
   Message::Passing
   Message::Passing::ZeroMQ.

AUTHOR
   Tomas Doran (t0m) "<[email protected]>"

COPYRIGHT
   Copyright the above author.

LICENSE
   GNU Affero General Public License, Version 3

   If you feel this is too restrictive to be able to use this software,
   please talk to us as we'd be willing to consider re-licensing under less
   restrictive terms.