Hi, first of all with any “common libraries” you will hit another problems in the microservice world. E.g. once the librariy is updated all the services depending on ti become outdated and have to be updated an deplyoed and so on. So “common library” is usually an antipattern for microservices.
Regarding Event Driven Microservices
I’m also new to the topic, but usually i asume the common approch would assume, that there should be one to one relation between Service and a typed stream of event it produces. So theoretically you could have a library that is ussed by clients of this stream that has versions of desired object. It would not be the common lib for all possible events in the system, but a subset u’ll found usefull over time.
But you don’t know in advance. A the beginnign you will have only one or few consumers anyway. Why not just starting with implementation in the services not spend time on “common lib” and see how it works. You still have the option to externalize the common parts to a library later. Usually this refactoring is not costly at all.
P.S. you used “message definition” in the first sentence but you still mean “event” i guess.