На странице центра знаний IBM MQ v8 " Использование асинхронного ввода в клиентском приложении " указано:
Обычно, когда приложение помещает сообщение или сообщения в очередь,
используя MQPUT или MQPUT1, приложение должно ждать очереди
менеджер, чтобы подтвердить, что он обработал запрос MQI. Вы можете
повысить производительность обмена сообщениями, особенно для приложений, которые используют
клиентские привязки и приложения, которые помещают большое количество маленьких
сообщения в очередь, выбрав вместо этого помещать сообщения
асинхронно. Когда приложение помещает сообщение асинхронно,
администратор очередей не возвращает успех или неудачу каждого вызова , но
вместо этого вы можете периодически проверять наличие ошибок.
Асинхронный пут влияет только на вызов пут, который сразу же вернется, вместо того, чтобы ждать, пока администратор очередей подтвердит, что он обработал пут.
Так что, если у вас есть следующее, оно будет самым быстрым, так как вы никогда не будете ждать записи сообщения на диск.
_message.Persistence = MQC.MQPER_PERSISTENT;
putMessageOptions.Options = MQC.MQPMO_ASYNC_RESPONSE; //async
_queue.Put(_message, putMessageOptions); //send message asynchronously
Если у вас есть какой-либо из них, фиксация будет ждать, пока сообщение не будет записано на диск, поэтому будет такой же медленной, как запись на диск. Вполне возможно, что это медленнее, чем выше, но 3 сек против 30 сек не кажется разумным.
_message.Persistence = MQC.MQPER_PERSISTENT;
putMessageOptions.Options = MQC.MQPMO_SYNCPOINT //unit of work
+ MQC.MQPMO_ASYNC_RESPONSE; //async
_queue.Put(_message, putMessageOptions); //send message asynchronously
_queueManager.Commit();
Или
_message.Persistence = MQC.MQPER_PERSISTENT;
putMessageOptions.Options = MQC.MQPMO_SYNCPOINT; //unit of work
_queue.Put(_message, putMessageOptions);
_queueManager.Commit();
Если вызов с MQPMO_SYNCPOINT и MQPMO_ASYNC_RESPONSE составляет 30 секунд, а вызов только с MQPMO_SYNCPOINT равен 3 секундам, то я думаю, что должен быть какой-то дефект, и я бы предложил вам открыть PMR с IBM, и они, вероятно, попросят вас по крайней мере, клиентская трассировка .NET и вероятная трассировка администратора очередей одновременно.