Назад | Перейти на главную страницу

Общесетевое взаимодействие / координация процессов

Я ищу способ связать процессы в нескольких системах в потенциально нескольких местах. Шина событий или очередь сообщений кажутся идеальным способом сделать это, но мне не удалось найти существующее решение, которое реализует что-то подобное. Приведу несколько примеров того, что я пытаюсь сделать ...

  1. На мой почтовый сервер приходит сообщение на адрес support@example.com. Я хотел бы начать работу на сервере, на котором работает мое программное обеспечение для управления проблемами, для POP почты из этой учетной записи.

  2. Один из моих сотрудников отправляется в наш внутренний репозиторий Git. Я хотел бы, чтобы мой чат-бот уведомил комнату разработчиков #developers об этом push, и мой сервер сборки начал сборку.

  3. Моя система развертывания завершает производственное развертывание. Я хотел бы, чтобы моя система управления проблемами помечала все проблемы в развертывании как развернутые, а мой чат-бот уведомлял комнату #operations об обновлении производственной среды.

Я знаю, что могу создавать сценарии, чтобы напрямую влиять на эти изменения (чем я и занимался), но я бы предпочел несвязанное решение. Необходимость модифицировать мой Git-обработчик post-receive каждый раз, когда я добавляю новое приложение, которое должно знать, когда было сделано нажатие, кажется странным для парня, который тратит большую часть своего времени на написание программного обеспечения. Развязка значительно упростит обслуживание, и я не вижу веских причин, чтобы все компоненты моей сети действительно знали друг о друге. Я запускаю смесь Windows Server 2008 R2 и CentOS 6.x / 7.x, так что кое-что кроссплатформенное было бы неплохо.

В идеале у меня должен быть демон в каждой системе, который прослушивает центральную очередь сообщений и позволяет мне определять задания или сценарии для реакции на определенные события. Мне также понадобится способ ввода события в очередь из командной строки или сценария. Я действительно открыт для всего, что позволяет добиться некоторой развязки. Единственное решение, которое я могу придумать, - это попробовать использовать сервер AMQP и подключить все самостоятельно.

Если что-то подобное уже существует, и я это пропустил, прошу прощения. Заранее благодарим вас за любые предложения.