4 ms·
> How common is this type of message bus outside of a very big Cloudflare is a pretty big one. There are others, but you're forgetting the much more common and
by joshuamorton 4y ago
> How common is this type of message bus outside of a very big
Cloudflare is a pretty big one. There are others, but you're forgetting the much more common and pernicious problem: a proto serialized in a database. The reader, writer, and database itself need to be synced across time as the database takes the shape of a message bus that stores the proto, potentially forever, so now to make something un-required, you have to first do an in place column type change on a database, as opposed to a 3-phase column migration, which is a safe thing everyone adores undertaking.
Just don't use required fields, they're bad. Learn from Google's mistakes!
> Also, I think the right lesson to take from this would be that the message bodies passing through the bus should be opaque
Proto has support for this (in varying forms, there's the `bytes` type and the `Any` type), but these are distinct from required, so if you want to keep required, you need to make sure that the [every] message bus wraps all clients in any, which has, if I recall, a nontrivial performance penalty.