MQI client: MQPUT1 sync point behavior change

An MQPUT1 call by an IBM MQ MQI client application that failed in IBM WebSphere MQ Version 6.0 can now sometimes succeed. The failure is returned to the application later, if it calls MQCMIT. For the change in behavior to occur, the MQPUT1 must be in sync point.

In the scenario, Example call sequence that demonstrates the change in behavior, an MQPUT1 call can succeed where it failed in Version 6.0. The result occurs when all the following conditions are met:

  • Both client and queue manager are later than Version 6.0.
  • The application program is connected to the queue manager as a client application
  • MQPMO_SYNCPOINT is set in the Put Message Options structure, MQPMO

We can make the IBM MQ MQI client behave like Version 6.0. Set Put1DefaultAlwaysSync to YES in the CHANNELS stanza of the client configuration file; see Figure 1.

Figure 1. Add Put1DefaultAlwaysSync to mqclient.ini
Channels:
Put1DefaultAlwaysSync=YES


Example call sequence that demonstrates the change in behavior

  1. MQCONN to queue manager from an IBM MQ MQI client application.
  2. MQPUT1 to a nonexistent queue with the MQPMO_SYNCPOINT option
  3. MQDISC

In IBM WebSphere MQ Version 6.0 the MQPUT1 call ends with MQCC_FAILED and MQRC_UNKNOWN_OBJECT_NAME(2085). Running with a client and server later than Version 6.0, the MQPUT1 call ends with MQRC_NONE and MQCC_OK.