Skip to content

Latest commit

 

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BigGoal

Это pet-проект, на котором я изучал работу с микросервисами, rabbitMQ, redis и многими другими мелкими тонкостями.

Что нужно установить:

  • github.com/rabbitmq/amqp091-go Для работы в Go с RabbitMQ
  • github.com/redis/go-redis/v9 Для работы в Go с Redis
  • Развернуть redis и rebbitMQ (Я делал это с помощью контейнеров Docker)

Как запустить:

  • go run .\cmd\api\start.api.go - Для запуска части сервера, которая слушает Api
  • go run .\cmd\consumer\start.consumer.go - Для запуска части сервера, которая являеться consumer
  • Развернуть redis и rebbitMQ (Я делал это с помощью контейнеров Docker)

Общая архитектура проекта:

BigGoal
│   go.mod
│   go.sum
│   README.md
│
├───api
│       api.go
│
├───cmd
│   ├───api
│   │       start.api.go
│   │
│   └───consumer
│           start.consumer.go
│
├───config
│       config.go
│
├───consumer
│       consumer.go
│
├───producer
│       producer.go
│
└───redis
        redis.go

Как работает:

Если говорить про Api:

Сервер прослушивает http://localhost:3000 с такими путями:

  • /ping - Отсылает в ответ Pong (Для проверки состояния сервера)
  • /receive - Увеличивает счетчик полученных сообщений на 1 (Для работы с redis)
  • /sent - Увеличивает счетчик отправленных сообщений на 1 (Также для работы с redis)
  • /api/v1/receive/messages/hello - Показывает текущее количество полученных сервером сообщений
  • /api/v1/sent/messages/hello - Показывает текущее количество отправленных сервером сообщений

Если говорить про Consumer и Producer:

Consumer:

  • Подключался к RabbitMQ по данным взятым из config.go
  • Начинал прослушку поступающих в очередь сообщений
  • При получении нового сообщения:
    • Проверял наличие типа hello в сообщении
    • При успешном прохождении проверки кидал запрос в redis на увелечения счётчика полученных сообщений
    • Вызывал Producer с ответным сообщением

Producer:

  • Подключался к RabbitMQ по данным взятым из config.go
  • При вызове:
    • Отправлял сообщение с типом hello в нужную очередь
    • При успешной отправке кидал запрос в redis на увелечения счётчика отправленных сообщений

About

ВебСервис на Golang

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages