Commit Graph

45 Commits

Author SHA1 Message Date
Arnaud Cogoluègnes 17d0ba9317
Return "no offset" (19) code when stored offset is undefined
Fixes #3783
2021-12-01 17:59:14 +01:00
wrobell 07dc62af7c Link to most recent description of Osiris chunk format
The most recent description of Osiris chunk format does not reference
the timestamp field to be "posix-ish" anymore. This was bit misleading
as it is Erlang's system time.

Add link to Erlang system time documentation to the subscription command
description to avoid confusion about the timestamp field.
2021-11-24 18:34:55 +00:00
wrobell b4f39031f6 Fix description of "deliver" command in RabbitMQ Streams protocol documentation
Add missing fields - chunk type, timestamp, trailer length and reserved.
The fields are added after looking at

    3fd348d225/src/main/java/com/rabbitmq/stream/impl/ServerFrameHandler.java (L267)
    https://github.com/qweeze/rstream/blob/master/rstream/schema.py#L376

Change type of "version" field - it shall be uint16 like in other
commands.
2021-11-14 14:51:35 +00:00
wrobell 08c417fdb7 Use hex values in RabbitMQ Streams protocol description
The protocol documentation uses decimal values for error and request key
codes.

Let's use hex values instead. This helps when looking at a request and
its response - 0x0006 and 0x8006 vs. 6 and 32774.

Also, when looking at output of protocol analysis tools like Wireshark,
a hexadecimal value will be printed, for example:

    "Nov  1, 2021 23:05:19.395825508 GMT","60216,5552","00000009000600010000000701"
    "Nov  1, 2021 23:05:19.396069528 GMT","5552,60216","0000000a80060001000000070001"

Above, we can visually identify delete publisher request and response
(0x0006 and 0x8006) and easily match them in the documentation of the
protocol.

Finally, above argument applies to logging as it is common to log
hex values, not decimal.
2021-11-02 18:31:30 +00:00
wrobell e74823d68c Fix use of "RabbitMQ Streams" in protocol documentation
The following RabbitMQ page uses "RabbitMQ Streams" or "streams",
therefore use it in the protocol documentation as well

    https://blog.rabbitmq.com/posts/2021/07/rabbitmq-streams-overview
2021-10-29 19:06:06 +01:00
wrobell 57ff5dbf4a Fix RabbitMQ Streams protocol documentation
1. Response for publisher declaration request does not contain
   publisher id.

2. Add mechanism entry to the details of SASL handshake request.

3. SASL handshake response contains list of mechanisms, not just single
   mechanism.
2021-10-28 17:53:22 +01:00
Arnaud Cogoluègnes 8f207e3c5f
Make stream protocol route command return several streams
We expect to have 1 stream for each routing key, but
as binding can return several queues for a given key we
let that possibility open in the stream protocol.
2021-09-13 17:53:25 +02:00
Federico Caprari 2246727428
Fix store offset parameters
As you can see 860333a088/deps/rabbitmq_stream_common/src/rabbit_stream_core.erl (L239)

There is the stream name and not the subscription id in this message.
2021-09-01 22:13:07 +02:00
Karl Nilsson f38c023aa8
Correct Publish frame docs 2021-07-21 09:13:55 +01:00
Gabriele Santomaggio 71c355c963
Fix links 2021-07-20 17:42:56 +02:00
Gabriele Santomaggio de0f7952e9 Add resources link
to client guide line and streams internals
2021-07-20 09:55:25 +02:00
Arnaud Cogoluègnes 7cb2645283
Replace commit with store for offset persistence
In stream protocol. Commit have a strong consistency connotation,
which is not actually enforced by the offset persistence
mechanism.
2021-07-08 10:32:04 +02:00
Arnaud Cogoluègnes dcd65572a0
Remove correlation ID from commit_offset
In stream protocol. commit_offset is asynchronous and does
not expect a response, so the correlation ID is not required.
2021-06-10 15:21:38 +02:00
Arnaud Cogoluègnes 8f8e08a9a9
Send advertised host and port in open
More secure than in peer properties frame, which is just
at the beginning of the connection opening.
2021-05-21 13:03:38 +02:00
Arnaud Cogoluègnes c15805b472
Fix stream protocol open origin
Client, not server.
2021-05-19 12:34:35 +02:00
Arnaud Cogoluègnes 7adac7a71b
Add subscription properties to stream protocol 2021-05-19 12:26:30 +02:00
Arnaud Cogoluègnes a807027adf
Use unsigned ints in stream protocol, when appropriate 2021-02-26 11:59:16 +01:00
Arnaud Cogoluègnes 9f0bec8def
Start constants at 1 for stream plugin 2021-02-26 11:48:45 +01:00
Arnaud Cogoluègnes 768a61792e
Use MSB in keys to distinguish requests/responses
In stream protocol.
2021-02-26 11:03:36 +01:00
Arnaud Cogoluègnes d70b55aa0c
Add route and partitions command to stream plugin
For publishing to super streams.
2021-02-25 17:22:42 +01:00
Arnaud Cogoluègnes 047e87137c
No global response code for metadata in stream protocol 2021-02-22 15:24:24 +01:00
Arnaud Cogoluègnes 9696861181
Fix stream protocol documentation after review 2021-02-22 15:19:58 +01:00
Arnaud Cogoluègnes b61be1e409
Mention stream protocol responses can have extra info 2021-02-22 11:42:34 +01:00
Arnaud Cogoluègnes a559c79b8c
Add response codes to stream protocol page 2021-01-18 14:25:24 +01:00
Arnaud Cogoluègnes 0d73b58be0
Re-order stream command constants
The order is more usage-oriented.
2021-01-18 11:25:21 +01:00
Arnaud Cogoluègnes 59bc60fe36
Add query publisher sequence 2020-11-26 10:02:13 +01:00
Arnaud Cogoluègnes 8f97ea400a
Start adding publishing dedup support for streams 2020-11-24 17:48:41 +01:00
Arnaud Cogoluègnes 580beb21bf
Include publish dedup in stream protocol 2020-11-20 11:43:04 +01:00
Arnaud Cogoluègnes 5e80aa9f39 Add correlation ID field in commit offset frame
Not used yet, but can avoid a command version change if the command
should have confirm response.
2020-10-02 14:16:22 +02:00
Arnaud Cogoluègnes 03a11e0771 Adapt failure tests
They are a bit more defensive. The subscription is also now more
reliable by returning a stream-not-available code if necessary.

Using also Aten poll interval to 1 second (bumped to 5 seconds in master
now).
2020-09-29 11:29:56 +02:00
Arnaud Cogoluègnes cf5e99cd29 Add offset tracking commands 2020-09-15 17:52:05 +02:00
Arnaud Cogoluègnes 21d9aea96c Add publisher ID 2020-09-02 15:13:37 +02:00
Arnaud Cogoluègnes 9a788362dd Change sub ID to byte in protocol reference 2020-09-01 18:13:41 +02:00
Arnaud Cogoluègnes 2fd743f2bd Add credit response to protocol reference 2020-06-19 15:27:46 +02:00
Arnaud Cogoluègnes c39852fa72 Introduce PeerProperties command
To exchange client/server properties at the beginning of the connection.
2020-06-10 10:42:29 +02:00
Arnaud Cogoluègnes d2a29c5aef Support client properties 2020-06-09 17:48:23 +02:00
Arnaud Cogoluègnes 121f0e3575 Improve readme 2020-06-09 13:53:49 +02:00
Arnaud Cogoluègnes a56cf4013c Support first/last/next/offset/timestamp offset spec 2020-06-02 16:35:00 +02:00
Arnaud Cogoluègnes 9536d74f9d Update link to osiris for data format 2020-06-02 11:13:19 +02:00
Arnaud Cogoluègnes 2f8559ae41 Polish documentation 2020-05-25 17:56:02 +02:00
Arnaud Cogoluègnes 838ef21b0d Document authentication sequence 2020-05-25 17:53:34 +02:00
Arnaud Cogoluègnes 4faa853b00 Fix link in documentation 2020-05-25 17:04:00 +02:00
Arnaud Cogoluègnes 0f86e54b61 Cover all commands in protocol documentation 2020-05-25 17:02:43 +02:00
Arnaud Cogoluègnes b7f70c6598 Fix links in documentation 2020-05-25 15:57:16 +02:00
Arnaud Cogoluègnes 848c95a181 Start documenting protocol 2020-05-25 15:55:51 +02:00