C# で記述された SSIS スクリプト タスクを使用して、IBM WebSphere MQ キューに書き込みを行っています。現時点では、いくつかの単純なループを使用して、必要な情報を Dictionary オブジェクトに収集し、アイテムを 1 つずつキューに配置します。ただし、現在は 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 に非常に慣れていないため、その方法がわかりません。どうも!
EDIT 以下の回答のコードを使用すると、例外がスローされます。プログラムが MQMessage オブジェクトの「put」メソッドに到達すると、MQ 例外「MQRC_FUNCTION_NOT_SUPPORTED」がスローされます。これは _COMPlusExceptionCode = -532459699 です。