java websphere MQ

Mi objetivo es poner n número de mensajes en un bucle for en una cola de WebSphere MQ utilizando la programación java de WebSphere MQ.

Mi programa java se ejecutará como un programa independiente.

Si hay alguna excepción intermedia, debo revertir todos los mensajes.

Si no hay excepción entonces debería cometer todos los mensajes.

El mundo exterior no debería ver mis mensajes en la cola hasta que lo complete por completo. ¿Cómo logro esto?

Actualizado con código de ejemplo según la respuesta de T.Rob:

Por favor, compruebe si el código de muestra está bien?

¿La configuración de MQGMO_SYNCPOINT solo está relacionada con la invocación de mi programa? (porque los programas similares que se ejecutan de forma paralela también pondrán los mensajes en la misma cola y esos mensajes no deberían verse afectados por el SYNCPOINT de mi 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();
            }
        }
    }

Respuestas a la pregunta(3)

Su respuesta a la pregunta