public void run()

in src/main/java/com/aliyun/mns/client/TransactionQueue.java [94:133]


        public void run() {
            log.info("CheckTransactionMesssage thread start");
            while (!isCheckerStop) {
                try {
                    Message opLogMessage = opLogQueue.popMessage();// use long polling.
                    Message transMessage = null;
                    if (opLogMessage != null) {
                        log.info("get an op log for message:" + opLogMessage.getMessageBody());
                        transMessage = new Message();
                        transMessage.setReceiptHandle(opLogMessage.getMessageBody());

                        boolean isTransSuccess = false;
                        try {
                            isTransSuccess = tChecker.checkTransactionStatus(transMessage);
                        } catch (Exception e) {
                            log.error("exception occurs when doing checkTransactionStatus with:"
                                + opLogMessage.getMessageBody()
                                + "exception message is:" + e.getMessage());
                        }

                        if (isTransSuccess) {   // transaction success, commit the message.
                            commitMessage(transMessage);
                        } else {
                            // transaction fail, rollback message and confirm op log.
                            rollbackMessage(transMessage);
                        }
                        confirmOpLogMessage(opLogMessage);
                    }
                    //else: in most time, operation log queue is empty and nothing need to do.
                } catch (Exception e) {
                    log.error("exception occurs:" + e.getMessage());
                    e.printStackTrace();
                }

                //sleep.
                mySleep(checkIntervalInMillisecond);

            }
            log.info("CheckTransactionMesssage thread end");
        }