private SendResult syncSend(String destination, Message<?> message, long timeout, long delayTime, DelayMode mode) {
        if (Objects.isNull(message) || Objects.isNull(message.getPayload())) {
            log.error("syncSend failed. destination:{}, message is null ", destination);
            throw new IllegalArgumentException("`message` and `message.payload` cannot be null");
        }
        if (Objects.isNull(mode)) {
            throw new IllegalArgumentException("`delay mode` can be null");
        }
        if (delayTime <= 0) {
            throw new IllegalArgumentException("`delayTime` should be greater than 0");
        }
        try {
            long now = System.currentTimeMillis();
            org.apache.rocketmq.common.message.Message rocketMsg = this.createRocketMqMessage(destination, message);
            switch (mode) {
                case DELAY_SECONDS:
                    rocketMsg.setDelayTimeSec(delayTime);
                    break;
                case DELAY_MILLISECONDS:
                    rocketMsg.setDelayTimeMs(delayTime);
                    break;
                case DELIVER_TIME_MILLISECONDS:
                    rocketMsg.setDeliverTimeMs(delayTime);
                    break;
                default:
                    log.warn("delay mode: {} not support", mode);
            }
            SendResult sendResult = producer.send(rocketMsg, timeout);
            long costTime = System.currentTimeMillis() - now;
            if (log.isDebugEnabled()) {
                log.debug("send message cost: {} ms, msgId:{}", costTime, sendResult.getMsgId());
            }
            return sendResult;
        } catch (Exception e) {
            log.error("syncSend failed. destination:{}, message:{}, detail exception info: ", destination, message, e);
            throw new MessagingException(e.getMessage(), e);
        }
    }
Same to {@link #syncSend(String, Message)} with send timeout and delay time specified in addition.
This function is only valid when the broker version is 5.0 or above

@param destination formats: `topicName:tags`
@param message {@link org.springframework.messaging.Message}
@param timeout send timeout with millis
@param delayTime delay time for message
@return {@link SendResult}
rocketmq-spring-boot/src/main/java/org/apache/rocketmq/spring/core/RocketMQTemplate.java