ActiveMQ MOM против удаленного метода против общей базы данных для архитектуры SOA в ColdFusion?

Мы на перекрестке архитектуры.

В предыдущей системе использовалась общая БД для связи друг с другом, но мы хотим избавиться от задержки опроса cfschedule. Вся подсистема написана на CF.

Я исследую MOM, скорее всего ActiveMQ, так как CF поставляется с шлюзом событий или базовыми вызовами удаленных методов. Дополнительный вопрос: будет ли использовать *.cfc?method= через http быстрее, чем вызывать их как SOAP веб-сервисы?

Мы также хотели бы иметь возможность регистрировать неудачные попытки, запрашивать фактическое состояние и, возможно, автоматически повторять попытки через определенный промежуток времени. MOM / ActiveMQ соответствует нашему счету? Нашим мы будем реализовывать свою очередь?

Также мы будем использовать стандарт CF, поэтому шлюз событий ограничен 1 потоком и 2 пользовательскими потоками одновременно.

Любой совет или предложение будут оценены, спасибо!

1 ответ

Решение

Учитывая, что вы спрашиваете о замене разделяемой БД ActiveMQ или удаленным вызовом метода, я предполагаю, что ваш сценарий использования - это передача сообщений по сравнению с общим состоянием приложения; Совместно используемая БД, очевидно, является хорошим способом создания общего состояния между несколькими приложениями. Ваше описание также заставляет меня думать, что ваше приложение отправляет уведомление или событие другим приложениям, потому что произошло что-то интересное...

Вызовы удаленных методов работают, когда вы вызываете одно приложение, вам нужен немедленный ответ, и вы знаете, что другое приложение будет доступно (т.е. запущено). Многие системы считают этот подход сложным, если принимающее приложение может не работать, когда сообщение необходимо отправить. Вызовы удаленных методов также являются сложными, если вам в настоящее время или в будущем необходимо отправить несколько приложений, особенно если будущие получатели неизвестны отправляющему приложению.

MOM, и в частности ActiveMQ, - это отличный подход к надежной и асинхронной отправке сообщений одному или нескольким получателям. Отправляющее приложение отправляет ActiveMQ сообщение, а затем продолжает выполнять свою работу (не блокирует ваше приложение для выполнения дополнительной работы). Получатель (и) сообщений получит сообщение, когда они подключены к ActiveMQ, то есть, если они подключены, когда сообщение отправлено, это эффективно так же быстро, как и удаленный метод; если получатель подключится позднее, он получит при подключении (без опроса). ActiveMQ гарантирует, что сообщение безопасно, пока получатель не подтвердит получение.

Если вы отправляете события, использование системы обмена сообщениями, такой как ActiveMQ, действительно хорошо, так как вы можете использовать парадигму публикации / подписки, где сообщения (события) могут доставляться нескольким получателям. Эти получатели неизвестны отправляющей заявке; им просто нужно знать, как подключиться к ActiveMQ. Эта парадигма - отличный способ отделить ваши приложения; Ваше приложение отправляет интересные события, а другие приложения, которым может быть полезно знать, что событие произошло, могут подключаться к ActiveMQ в будущем...

Отличным ресурсом для многих шаблонов интеграции, включая публикацию / подписку, является сайт корпоративных интеграционных шаблонов Грегора Хопе. Дополнительную информацию об ActiveMQ можно найти на Apache ActiveMQ или на сайте ActiveMQ FuseSource.

Надеюсь, это поможет,

Скотт

Другие вопросы по тегам