Multithreaded Java Asterisk Manager wrapper

Job ID: 33954905

Budget: $250 – $750 USD

I need to build a proof of concept Java multithreaded standalone application that will connect to one or multiple Asterisk servers using AMI protocol (preferably using a library) and trigger a callback function when receiving events.
At the same time, one or multiple clients can connect to this Java application using a predefined port (like 5039) and using the AMI protocol receive the events from the asterisk servers and send commands to one or multiple clients.
When an event is received from the asterisk server, the application will send the same event to all or some of the clients connected.
When a command is received from any of the clients connected, the same command will be sent to the asterisk server.
In other words, I need a "wrapper". This is just a proof of concept and it is the first step toward the development of a larger application with a larger budget.
Each connection to the Asterisk servers needs to be a thread and each connection from the clients needs to be a thread. Data must be passed between the threads. When the connection to the asterisk manager dies or is interrupted, it needs to be reconnected. When the connection from the client dies, the thread can die. A structure must be maintained among all the threads containing the user used for authentication and other data read from a MySQL database at the time of the authentication from the client.