What are our options for keeping SQS but somehow sending large payloads? Only thing I can think of is throwing them into another datastore and using the SQS just as a pointer to, say, a key in a Redis instance.
(Kafka is probably off the table for this, but I could be convinced. I'd like to hear other solutions first, though.
Based on the structure of the message (UUIDv4) you could probably roll your own implementation in any language.
We do it "by ourselves", not using the provided lib, because that way it works both for SQS and SNS. The provided lib only supports SQS.
Also our messages aren't typically very big, so we do this only if the payload size demands it.
We just recently started gzipping our payloads, which buys us even more time.
OrderCreated(order_id=23)
UserLoggedIn(user_id=342)
etc.
I guess you are sending the whole user object over the event bus? Isnt that an anti-pattern?