The MessageMQ producer implementation seems to basically work.

The implementation still needs to be refined so that:

1. There is a bean dependency between the consumer and producer
singletons.

2. Shutdown tries to ensure that the blocking queue is flushed before
the producer threads are shutdown.
Shutdown process now waits for blocking queue to empty before quitting
Wrote method:
RabbitMQConsumerController.stopConsumerThreadsAndWaitForTermination()
for code reuse and to make thhe @PreDestroy methods of the singleton
beans easier to read.
Added method:
RabbitMQProducerController.waitForRabbitMQProducerQueueToEmpty()
Added method:
RabbitMQProducerController.stopProducerThreadsAndWaitForTermination()
Safety net in case I screw up with the subsequent changes.
Made RabbitMQProducerController.state & RabbitMQConsumerController.state
static and removed their getters & setters.
Made rabbitMQConsumer, rabbitMQConsumerThread and related lists static.
Code cleanup before eliminating stop() methods.
Eliminated stop() methods
Eliminated most calls to start() and just set RUNNING state instead.
Moved acquiredMessageHandlerPermits() to Producer threads controller
bean.

This enabled the Consumer cntroller bean to be removed as a dependency
in other classes
Rewri
ote RabbitMQProduceController.stopConsumerThreadsAndWaitForTermination()
to call .join() for the thread(s).
	
Then I could eliminated getConsumerState() &
getConsumerState(threadIndex) methods.
Replaces code in the "Shutdown" servlet with
RabbitMQProducerController.shutdown()

Introduced a new "Start" servlet and renamed the "Shutdown" servlet to
"Stop".
Eliminated unused exceptions, plus general code cleanup.
Merge branch 'feature/rabbitmq-producer' into develop
Finished renaming classes & other objects for general code cleanup.
Implemented consumer "throttling" based on number of elements in
producer blocking queue.
Added throttling based on unacknowledged CDI events, but must still
add support for ensuring that all CDI events are acknowledged during
shutdown before we stop the appropriate threads.
Added wait for outstanding CDI events to be acknowledged during shutdown