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