Skip to content

Публикация сайтовой информации о изменении подписок клиента

Notifications You must be signed in to change notification settings

antonowano/produce-subscription-change

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Описание

Все изменения (Email и SMS) подписок пользователя на сайте фиксируются в таблице subscription_change. Написанная команда выбирает все необработанные изменения выполненные сайтом (is_processed = 0 AND source != 4), отправляет их в Kafka и помечает как обработанные (is_processed = 1). Это позволяет другим сервисам (к примеру 1С) обновить данные у себя.

Сообщения отправляемые в Kafka

Сообщения отправляются в топик subscription.

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

  • type - индикатор типа (0 - email, 1 - смс)
  • id - email или номер телефона в зависимости от типа
  • value - состояние подписки (true - включена, false - выключена)
  • confirmed - подтвержден ли email или номер телефона в зависимости от типа (true - подтвержден, false - не подтвержден)

Примеры

{"type": 1, "id": "+7(930)288-08-07", "value": true, "confirmed": true}

Пользователь с номером телефона +7(930)288-08-07 подписан на SMS, номер телефона подтвержден

{"type": 1, "id": "+7(123)213-12-31", "value": false, "confirmed": true}

Пользователь с номером телефона +7(123)213-12-31 отписан от SMS, номер телефона подтвержден

{"type": 0, "id": "ivan2@antonov.site", "value": false, "confirmed": false}

Пользователь с почтой ivan2@antonov.site отписан от Email, почта не подтверждена

{"type": 0, "id": "vasya@antonov.site", "value": true, "confirmed": false}

Пользователь с почтой vasya@antonov.site подписан на Email, почта не подтверждена

{"type": 0, "id": "i.antonov@company.ru", "value": false, "confirmed": true}

Пользователь с почтой i.antonov@company.ru отписан от Email, почта подтверждена

{"type": 0, "id": "antonowano@gmail.com", "value": true, "confirmed": true}

Пользователь с почтой antonowano@gmail.com подписан на Email, почта подтверждена

Переменные окружения

Для деплоя нужно установить следующие переменные окружения

Переменная Описание Пример
MYSQL_DSN строка для подключения к БД user:password@tcp(127.0.0.1:3306)/database
KAFKA_BROKERS список брокеров для подключения к Kafka broker1:9092,broker2:9092,broker3:9092
KAFKA_USERNAME имя пользователя для подключения к Kafka admin
KAFKA_PASSWORD пароль пользователя для подключения к Kafka admin-secret

Среда разработки

Здесь описана инструкция как запустить нашу команду в среде разработки.

  1. Для запуска и отладки программы нужно развернуть docker compose
docker-compose -f docker-compose.dev.yml up
  1. Нужно создать новый топик с именем subscription. Проще всего это сделать через dashboard kafka по адресу http://localhost:8080/.

  2. Запускаем нашу команду в docker

docker-compose -f docker-compose.dev.yml run app

Кроме того у нас есть возможность запускать команду не в контейнере, а прямо на локальном компьютере. Для этого нужно установить Golang. И запустить программу со следующими environment variables:

Переменная Пример
MYSQL_DSN user:password@/database
KAFKA_BROKERS 127.0.0.1:9092,127.0.0.1:9093,127.0.0.1:9094
KAFKA_USERNAME kafka
KAFKA_PASSWORD kafka-secret

Результат выполненной работы мы можем наблюдать в dashboard kafka.

About

Публикация сайтовой информации о изменении подписок клиента

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages