Earlier quoted context omitted.
> thin events reduce coupling. Sure, the receiver might call an API and that creates coupling with the API. You make a statement in the first sentence, and in the next sentence produce evidence ... that the statement is wrong. And, YMMV. It is my experience that thin events add coupling. If service B receives an event, and wants to process it ASAP (i.e. near real time) and so calls back over http to Service A for the…
> You make a statement in the first sentence, and in the next sentence produce evidence ... that the statement is wrong. My first sentence was quoting from the article, then I refute the article. Sorry if that wasn’t clear. Re your point a), yes I agree in this case you’d send the contents in the body, but then I’d tend to call it stream processing rather than event processing - I admit this might seem like splitting…
> it’s very difficult to efficiently create event bodies that contain everything that all receivers are going to need.
"everything that all receivers need" seems like another straw man, a "you won't get it perfect so don't try to improve". I've seen it work well enough to be worthwhile.
> From a maintenance perspective, the sender doesn’t know what the receivers depend on
At a glance, no. But it's not imponderable, assuming a limited number of in-house consumers. The absolute statement about it isn't accurate.
> it’s just an assumption that the receiver needs the version of data in the message, rather than the latest version. So I don’t think this is a strong argument for fat events.
I've seen it cause a severe and hard-to-diagnose failure, when system A lags enough, so I think it is a strong argument.
> Maybe I should have said, “I’m on team thin by default.
Sure. I'm on team "fat events" by default because it can solve more issues than it creates. If it turns out that 90% of the event gets ignored, with no issues or http call-backs, then this might be a case for thin events.