Giter Club home page Giter Club logo

rabbitmq_clickhouse's Introduction

Обработка URL-ов и сохранение данных в базы данных

Этот проект демонстрирует пример обработки URL-ов, валидацию их формата, отправку в очередь RabbitMQ и сохранение данных в базы данных MariaDB и ClickHouse. Проект разработан без использования фреймворков и библиотек для работы с базами данных.

Требования

  • PHP 7.4 и выше
  • Библиотека php-amqplib для работы с RabbitMQ

Описание файлов

  • RabbitMQManager.php: Класс для управления отправкой и получением URL-ов из RabbitMQ. Использует трейт UrlSendAble для упрощения отправки валидных URL-ов.

  • MariaDBDatabase.php: Класс для работы с базой данных MariaDB. Валидирует URL-ы перед сохранением и выполняет агрегированные запросы.

  • ClickHouseDatabase.php: Класс для работы с базой данных ClickHouse. Также валидирует URL-ы перед сохранением и выполняет агрегированные запросы.

  • UrlProcessor.php: Класс для обработки URL-ов, отправки в RabbitMQ и сохранения данных в базы данных. Использует трейты UrlValidateAble и UrlSendAble для валидации и отправки URL-ов.

  • traits/UrlValidateAble.php: Трейт для валидации URL-ов. Осуществляет проверку формата URL-ов.

  • traits/UrlSendAble.php: Трейт для упрощенной отправки валидных URL-ов в RabbitMQ. Устраняет дублирование кода.

Использование

  1. Клонировать этот репозиторий:
    git clone https://github.com/Vanya9422/my_task.git
    cd my-task
    
  2. Запустить сборку Docker
    docker-compose up -d && docker-compose exec php-fpm composer install
    

Рефакторинг и модульность

  • Произведен рефакторинг класса UrlProcessor для более четкой структуры и лучшей читаемости кода.
  • Добавлен трейт UrlValidateAble, предоставляющий метод validateUrls() для валидации URL-ов перед обработкой.
  • Реализован трейт UrlSendAble, который упрощает отправку валидных URL-ов в RabbitMQ.

Использование интерфейсов

  • Создан интерфейс DatabaseInterface, содержащий общие методы для работы с базами данных.
  • Внедрен интерфейс DatabaseInterface в класс UrlProcessor для вывода агрегированных данных из разных баз данных.

Обработка ошибок и валидация

  • В методе processUrls() добавлена обработка ошибок и вывод сообщений о невалидных URL-ах.
  • Введено новое исключение ValidationException для обработки ошибок валидации URL-ов.

Улучшение читаемости и исправление ошибок

  • Произведены мелкие правки в коде, улучшающие его читаемость.
  • Исправлены небольшие ошибки для повышения надежности кода.

Как использовать?

  1. Убедитесь, что все необходимые зависимости из файла composer.json установлены при помощи команды:

  2. Воспользуйтесь обновленным классом UrlProcessor, включающим в себя улучшенную валидацию, обработку ошибок и трейты для модульности.

  3. При необходимости, настройте параметры подключения к базам данных, RabbitMQ и другие настройки в соответствующих классах.

Важно знать!

  • Произведенные улучшения направлены на повышение надежности и читаемости кода.
  • Рекомендуется проверить совместимость изменений с вашим проектом перед обновлением.

Эти изменения делают код более структурированным, повторно используемым и надежным, что улучшит ваш опыт работы с приложением.

rabbitmq_clickhouse's People

Contributors

vanya9422 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.