We can alter our microservice architecture and remove the field lastMessageTime from the User entity.
Then we could display this time in the user profile by issuing a separate request to the messages microservice and finding the maximum messageTimestamp value for all messages of this user.
Probably, if the message microservice is under high load or even down, we won't be able to show the time of the last message of the user in her profile.
freestar
But that could be more acceptable than failing to commit a distributed transaction to save a message just because the user microservice didn't respond in time.
There are of course more complex scenarios when we have to implement a business process across multiple microservices, and we don't want to allow inconsistency between those microservices.