Acceptable practice seems to be to retry sending Brokered message to Azure ServiceBus topic on transient errors. Sometimes during the retry the brokered message's body would already be consume (by the previous try) and the message cloning can be done on retry to send the message.
However it is possible that the message was already sent but client still sees a transient exception and ends up retrying send. The forums have been talking about setting up the RequireDuplicateDetection flag set on the topic to prevent duplicate message appearing on the topic/subscription or the consumer of the message to detect such a replay to avoid reprocessing, but is it possible for the client to detect that the message has been already sent so as not to resend it as well?