My advice? NotDo not share these DTOs among the applications in any kind of library. Or at least don't do this right now.
I know, seems very counter intuitive-intuitive. You are duplicating code, right? But this is not a business rule, so you can be more flexible.
The service that sends the DTO needs to be rigid in his message contract, like an Rest API. The service can't change the DTO in a way that could break the other services that are already consuming the informationsinformation from the DTO.
When a new field is added do DTO, you only update the other services that consume this DTO if they need the new field. Otherwise, forget it. Using JsonJSON as content-type you have the flexibility to create and send new atributesattributes without breaks the code of the services that don't map these new fields on his actual versions of DTO.
But if this situation areis really bothering you, you can follow the Rule of Three:
There are two "Rules of Three" in reuse: (a) It is three times as difficult to build reusable components as single use components, and (b) a reusable component should be tried out in three different applications before it will be sufficiently general to accept into a reuse library.
So, try to wait a bit more before sharesharing this DTO among the services.