shad-go/pubsub/README.md
2021-04-01 18:05:31 +03:00

18 lines
1.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## pubsub
В этой задаче нужно написать простую шину событий работающую по принципу pub/sub.
В файле [pubsub.go](./pubsub.go) заданы интерфейсы `PubSub`/`Subscription` с подробным описанием всех методов.
Требования к системе:
- На один топик может подписываться (и отписываться) множество подписчиков.
- FIFO для сообщений, вы не должны терять их порядок.
- Один медленный подписчик не должен тормозить остальных.
- Метод Close должен уважать переданный контекст, так если он отменен - выходим сразу, бегущие хендлеры оставляем бежать.
- Если будут использоваться горутины - они не должны течь :)
Нужно написать реализацию и конструктор (см. [my_pubsub.go](./my_pubsub.go)):
```
func NewPubSub() PubSub
```