Я пишу в очередь IBM WebSphere MQ, используя задачу SSIS Script, написанную на C #. На данный момент мы используем пару простых циклов, чтобы собрать необходимую нам информацию в объект Dictionary, а затем поместить элементы один за другим в очередь. Однако сейчас мы извлекаем данные из базы данных SQL, и мне нужно сделать эти обновления атомарными.
Вот код, используемый для добавления информации в словарь.
//add to list so we can weed out the duplicates
if (!qContents.ContainsKey(retrievedMessage.Substring(0, 13)))
{
qContents.Add(retrievedMessage.Substring(0, 13), retrievedMessage);
}
И вот здесь они добавляются в очередь. Метод MqPut используется для отправки каждого элемента в очередь отдельно.
//write out unique agent ids to consolidated queue
foreach (string agentItem in qContents.Values)
{
MqPut(agentItem, _outputQueue);
}
Весь блок кода заключен в блок try / catch / finally, поэтому я уверен, что мне придется как-то его использовать, однако я новичок в WebSphere MQ и не знаю, как это сделать. Спасибо!
ИЗМЕНИТЬ Использование кода из приведенного ниже ответа вызывает исключение. Как только программа переходит к методу "put" объекта MQMessage, генерируется исключение MQ "MQRC_FUNCTION_NOT_SUPPORTED". Это _COMPlusExceptionCode = -532459699