java websphere MQ

Meu objetivo é colocar um número n de mensagens em um loop for em uma fila do WebSphere MQ usando a programação java do WebSphere MQ.

Meu programa java será executado como um programa independente.

Se houver alguma exceção, eu preciso reverter todas as mensagens.

Se não houver exceção, devo enviar todas as mensagens.

O mundo exterior não deve ver minhas mensagens na fila até que eu complete completamente. Como faço para conseguir isso?

Atualizado com código de amostra conforme resposta de T.Rob:

Por favor, verifique se o código de exemplo está bem?

A definição de MQGMO_SYNCPOINT está relacionada apenas à chamada do meu programa? (porque programas similares rodando paralelamente também colocam mensagens na mesma fila e essas mensagens não devem ser afetadas pelo SYNCPOINT do meu programa.)

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();
            }
        }
    }

questionAnswers(3)

yourAnswerToTheQuestion