Tinshuk,
To add to Ben's response: Because you are seeing the same message with different IDs, it means it was published by the client multiple times. This will typically happen if the success response of a publish request is not properly handled (e.g. the callback is never invoked) or if the publish request terminates with a deadline_exceeded error or when a client reaches the maximum request time (configured by the client). In the deadline_exceeded case the service may have responded to you with a "success" but the response got stuck somewhere in the network.
To confirm, look at the request error rates in Monitoring. You can also force this behavior to be handled more explicitly on the client by changing the retry settings. You may want to set very long deadlines if your network connection is struggling so that the client does not terminate the connection prematurely. In the end, it's not possible to eliminate such duplication entirely but you can certainly reduce the rate.
I'd love to find out about your use case here. If you'd be so kind, you can respond to me directly.
Kir, Product Manager, Pub/Sub