What's Changed
Main changes:
Limit the size of a response by @Florimond in #413
From the begining, mqtt.go defines a maximum size for a response. However if the limit was met, it resulted in an error and no message was sent. Now, the Query itself limits the size of a frame and messages are sent to the client, but only those whose total size <= to the maximum size of a response.
Implications on the current API: for a subscribe request with a Last=X parameter, the client will receive the last messages whose total size is <= to the max size of a response, with a maximum of X messages. This behavior is an improvement over just getting an error.
Adds the new history API by @Florimond in #414
The history api allows to retrieve any number of messages stored in a channel. As the number of messages that can return in a single response is limited by the size of a response (as per #413), a system of pagination is required. This system is implemented with the introduction of the StartFromID query parameter. An client that already received a response with a certain number of messages can send a new request to the API with the StartFromID set to the ID of the last message it received. The storage query will then start retreiving messages starting at that ID to provide the API the next page of messages in its response.
[FIX] Storage implement the Surveyee interface by @Florimond in #420
This fixes a major bug preventing Emitter instances to start a cluster.
New Contributors
Full Changelog: v3.0...v3.1