Как разрабатывать приложения без балансировки нагрузки EJB?
У меня есть класс Java Processor
он слушает тему jms и пытается не отставать от скорости поступления сообщений, поэтому мы решили работать одновременно:
Единственный класс, слушающий тему, задача которой состоит в том, чтобы передавать сообщения пулу рабочих потоков, фактически являясь балансировщиком нагрузки. Это также должно помешать двум работникам обрабатывать сообщения для одного и того же клиента.
Я ожидал, что в Интернете будет достаточно информации об этом, но, похоже, все предполагает использование EJB, где сервер приложений управляет пулом и выполняет балансировку. Я уверен, что это должно быть действительно распространенной проблемой, но не могу найти какие-либо библиотеки или шаблоны проектирования, чтобы помочь. Я делаю из этого больше, чем есть, и должен просто копаться и писать свой собственный код?
2 ответа
Эту проблему легко решить с помощью группы слушателей. Это то, что сервер приложений будет делать для вас.
Я бы получил хороший сервер приложений и использовал бы его MDB для быстрого решения этой проблемы. Размер бассейна, чтобы не отставать, и вы будете в порядке.
Если вы настаиваете на написании собственного кода, получите хорошую реализацию пула с открытым исходным кодом и используйте его.
Если это не EJB, рассмотрим Spring. Он содержит POJO, управляемые сообщениями, которые могут быть именно тем, что вам нужно
Почему бы вам просто не использовать очередь вместо темы и иметь несколько экземпляров одного и того же приложения для обработки сообщений из этой очереди?