- Make the beginning of handlers consistent with uniform variable declaration
and grouping.
- Add missing comments.
- Fix staticcheck/vet warnings and idiom issues.
- Sent count is no longer the batch size fetched from the DB but is
the actual count of messages sent.
- Pausing and resuming now accurately tracks the last subscriber that
was processed and resumes from there.
- Fix multiple concurrent campaigns blocking.
Closes#1616. Closes#905. Closes#1496. Closes#1250. Closes#1010.
This commit fully refactors the core campaign manager logic.
It applies a whole new approach to campaign state and lifecycle management.
- Create a new "pipeline" abstraction on top of campaign
for state management.
- Account for every message processed and end campaigns
based on the actual count.
- Discard in-queue messages in the pipeline of a paused
or cancelled campaign.