public Message sendTransMessage()

in src/main/java/com/aliyun/mns/client/TransactionQueue.java [270:310]


    public Message sendTransMessage(Message message, TransactionOperations operations) throws ServiceException,
        ClientException {
        String handler = null;
        Message prepareMsg = null;
        Message opLogMessage = null;
        boolean localOpResult = false;

        prepareMsg = this.sendPrepareMessage(message);
        if (prepareMsg != null) {
            handler = prepareMsg.getReceiptHandle();
            prepareMsg.setMessageBody(message.getMessageBody());
        } else {
            return prepareMsg;
        }

        // write operation log to op queue before do transaction.
        opLogMessage = this.sendOpLogMessage(handler);

        //do local transaction operation.
        try {
            localOpResult = operations.doTransaction(prepareMsg);
        } catch (Exception e) {
            log.error("exception occurs when do transaction with message:"
                + prepareMsg.getMessageBody() + ", message handler is:"
                + prepareMsg.getReceiptHandle());
            localOpResult = false;
        }

        if (localOpResult) {
            //commit message, it will retry 3 times by default if it was fail.
            this.commitMessage(handler);
        } else {
            this.rollbackMessage(handler);
            prepareMsg = null;
        }

        // confirm the operation log message.
        this.confirmOpLogMessage(opLogMessage);

        return prepareMsg;
    }