Обновить
2K+
34

Пользователь

33
Подписчики
Отправить сообщение

Всем привет! Статья доработана с учетом предложенных советов.

😀😀😀 Как только появится свободное время.

Спасибо за комментарий.

Спасибо за комментарий. Да согласен, что если отталкиваться от общего описания данного паттерна, которое звучит, что "событие сохраняется в БД в одной транзакции с бизнес-данными, а затем гарантированно доставляется потребителю", то может быть несколько возможных реализаций (шедулер, который слушает новые записи в таблице и отправляет их в кафку, просто отправка в кафку с ретраями на случай, если кафка недоступна, и т.д.).

Спасибо за комментарий. Да, согласен.

Спасибо за комментарий. Да, согласен. Replication factor - показывает на сколько брокеров-последователей (follower) будут скопированы данные с ведущего лидера (leader), а partition count - количество патриций (разделов).

Спасибо за комментарий.

Спасибо за комментарий.

version: '3.8'
services:
  client-frontend:
    image: frontend:0.0.1
    build: ./frontend
    restart: always
    ports:
      - '3000:3000'
    volumes:
      - /app/node_modules
      - ./frontend:/app

  client-backend:
    image: client:0.0.1
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8181:8181"
    depends_on:
      service-db:
        condition: service_healthy
    environment:
      - SERVER_PORT= 8181
      - SPRING_DATASOURCE_URL=jdbc:postgresql://service-db/books_db

  service-db:
    image: postgres:14.7-alpine
    environment:
      POSTGRES_USER: username
      POSTGRES_PASSWORD: password
    healthcheck:
      test: [ "CMD-SHELL", "pg_isready", "-d", "books_db" ]
      interval: 10s
      timeout: 3s
      retries: 3
    ports:
      - "15432:5432"
    volumes:
      - ./infrastructure/db/create_db.sql:/docker-entrypoint-initdb.d/create_db.sql
      - db-data:/var/lib/postgresql/data
    restart: unless-stopped

  pgadmin:
    container_name: pgadmin4_container
    image: dpage/pgadmin4:7
    restart: always
    environment:
      PGADMIN_DEFAULT_EMAIL: admin@admin.com
      PGADMIN_DEFAULT_PASSWORD: root
    ports:
      - "5050:80"
    volumes:
      - pgadmin-data:/var/lib/pgadmin

volumes:
  db-data:
  pgadmin-data:

Спасибо за комментарий. Полностью согласен с ним, возможна такая ситуация когда postgreSQL не успеет накатить БД, так как depends_on гарантирует только, что сервис будет стартовать сразу после другого, не дожидаясь полного окончания его старта.

Спасибо за комментарий и за Ваше мнение. Пример кода, представленный в статье, носит исключительно обучающий характер паттерна Компоновщик.

Спасибо за комментарий.

Определение паттерна компоновщик с wikipedia Компоновщик (англ. Composite pattern) — структурный шаблон проектирования, объединяющий объекты в древовидную структуру для представления иерархии от частного к целому. Компоновщик позволяет клиентам обращаться к отдельным объектам и к группам объектов одинаково.

То есть тут ничего нету про наследование двух и более интерфейсов.

Также информация с сайта refactoring.guru

Также нету ничего про наследование нескольких интерфейсов.

Спасибо за комментарий. Пока в планах нет такого, но я подумаю))) Хотя тут уже есть каркас, на который при желании и с учетом того, что хотите получить на выходе, можно дальше "пилить": кнопки, базу данных подключать и т.д.

Спасибо за комментарий. Классный пример на Delphi

Спасибо за комментарий. Данное API для курсов валют было использовано, так как до него можно достучаться без каких-либо дополнительных регистраций, и исключительно для примера. Никакой "Теории заговора" тут нет)))

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

Спасибо за комментарий. Как-то пару месяцев назад начал читать книгу Леонида Кутузова "Всем привет, а вот и я! Правда об английской грамматике". Там автор говорил, что в английском вообще нет времен, там много было про аспекты, залоги и т.д. Правда я эту книгу так и не дочитал, потому что вообще не понял или понял совсем не много из того что прочитал. Правильное использование времен в английском, в учетом времени, аспектов, залогов, согласованности времен - это сложный процесс, который приходит постепенно с углубленным изучением языка. Здесь главное начать чувствовать и понимать, что хочешь сказать. У всех разный уровень владения языком, какие-то вещи, которые для уровня С1-С2 кажутся банальными и понятными для уровня А2-В1 - непонятными от слова "совсем".

1

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность

Специализация

Специалист
Java