Я рекомендую вам еще раз взглянуть на ActiveMQ. Хотя по умолчанию это отдельное приложение, вы также можете встроить его в свое приложение, сделав его «автономным». Я сделал это с помощью поддержки ActiveMQ , но вы также можете сделать это программно, просто создав правильные классы в своем приложении. ActiveMQ легок и предлагает несколько постоянных механизмов.
Что касается диссонанса с представлением о «сообщениях» как о «рабочих местах», я думаю, это зависит от того, что вы подразумеваете под «работой». Если я передам вам лист бумаги с надписью «косить газон», и вы подумаете об этом как о работе, тогда сообщения могут стать работой. Если вместо этого у вас нет работы, пока вы фактически не начнете скашивать газон, то это не так.
Возможно, вы захотите взглянуть на Spring Batch , который использует модель домена на основе заданий . Он также является встраиваемым и имеет встроенные средства сохранения, повторения и т. Д.