Java WebSphere MQ

Моя цель - поместить n сообщений в цикл for в очередь WebSphere MQ с помощью Java-программирования WebSphere MQ.

Моя Java-программа будет работать как отдельная программа.

Если между ними возникнет какое-либо исключение, мне нужно откатить все сообщения.

Если не исключение, я должен зафиксировать все сообщения.

Внешний мир не должен видеть мои сообщения в очереди, пока я не завершу полностью. Как мне этого добиться?

Обновлено с примером кода в соответствии с ответом от T.Rob:

Пожалуйста, проверьте, если образец кода в порядке?

Связана ли настройка MQGMO_SYNCPOINT только с вызовом моей программы? (потому что аналогичные программы, работающие параллельно, также будут помещать сообщения в одну и ту же очередь, и эти сообщения не должны зависеть от SYNCPOINT моей программы.)

public void sendMsg() {
        MQQueue queue = null;
        MQQueueManager queueManager = null;
        MQMessage mqMessage = null;
        MQPutMessageOptions pmo = null;
        System.out.println("Entering..");
        try {
            MQEnvironment.hostname = "x.x.x.x";
            MQEnvironment.channel = "xxx.SVRCONN";
            MQEnvironment.port = 9999;


            queueManager = new MQQueueManager("XXXQMANAGER");
            int openOptions = MQConstants.MQOO_OUTPUT;      
            queue = queueManager.accessQueue("XXX_QUEUENAME", openOptions, null, null, null);

            pmo = new MQPutMessageOptions(); 
            pmo.options = CMQC.MQGMO_SYNCPOINT;


            String input = "testing";
            System.out.println("sending messages....");
            for (int i = 0; i < 10; i++) {
                input = input + ": " + i;
                mqMessage = new MQMessage();
                mqMessage.writeString(input);
                System.out.println("Putting message: " + i);
                queue.put(mqMessage, pmo);

            }
            queueManager.commit();
            System.out.println("Exiting..");

        } catch (Exception e) {
            e.printStackTrace();
            try {
                System.out.println("rolling back messages");
                if (queueManager != null)
                    queueManager.backout();
            } catch (MQException e1) {
                e1.printStackTrace();
            }
        } finally {
            try {
                if (queue != null)
                    queue.close();
                if (queueManager != null)
                    queueManager.close();
            } catch (MQException e) {
                e.printStackTrace();
            }
        }
    }

Ответы на вопрос(3)

Ваш ответ на вопрос