キュー情報を取得する次のコードがあります。これは2232
、トランザクションの一部として実行されるとエラーをスローします。
Dim specificQMConnProperties As Hashtable = CType(queueManagerConnectionProperties.Clone(), Hashtable)
specificQMConnProperties.Add(MQC.HOST_NAME_PROPERTY, qmgrHostNameOrIP)
specificQMConnProperties.Add(MQC.PORT_PROPERTY, qmgrPort)
specificQMConnProperties.Add(MQC.CHANNEL_PROPERTY, qmgrChannel)
Dim qmgr As MQQueueManager = Nothing
Try
qmgr = New MQQueueManager(qmgrName, specificQMConnProperties)
Catch ex As MQException
Select Case ex.ReasonCode
Case 2059, 2538
' qmgr or host not available
Return nothing
Case Else
' continue
End Select
End Try
If qmgr IsNot Nothing Then
Try
' use PCF to get queue information.
Dim agent As New PCFMessageAgent(qmgr)
Dim request As New PCFMessage(CMQCFC.MQCMD_INQUIRE_Q)
request.AddParameter(MQC.MQCA_Q_NAME, queueName)
Dim responses As PCFMessage() = Nothing
Try
' connected
responses = agent.Send(request)
Catch pcfex As PCFException
LogException(pcfex, {queue}, "Exception checking queue availability via PCF. Assuming false")
Return Nothing
End Try
If responses IsNot Nothing AndAlso responses.Any() Then
LogDebug("Checking queue availability for " & queue.ToString() & " returned a PCF result.")
return responses
Else
LogError("No result returned from PCF Message request on " & queue.ToString())
Return Nothing
End If
Catch ex As MQException
LogException(ex, {queue})
Return False
End Try
End If
次のように、行でエラーが発生しresponses = agent.Send(request)
ます。
完了コード: 2、理由コード: IBM.WMQ.MQDestination.Put(MQMessage メッセージ、MQPutMessageOptions pmo) の 2232(2232=MQRC_UNIT_OF_WORK_NOT_STARTED) IBM.WMQ.PCF.PCFAgent.Send(Int32 コマンド、PCFParameter[] パラメーター) IBM .WMQ.PCF.PCFMessageAgent.Send (PCFMessage 要求、ブール値チェック) で IBM.WMQ.PCF.PCFMessageAgent.Send (PCFMessage 要求) で MyMethod
残りのトランザクション接続オプション (メッセージの get または put など) をOr MQC.MQGMO_SYNCPOINT
追加しましたが、PCF メッセージの接続オプションを設定する方法がわかりません。誰でも手伝ってもらえますか?
明確にするために、トランザクションの一部として送信されるかどうかはあまり気にしませんが、Transactionscope が開いているため、このエラーが発生します。
- 編集 -
上部にキュー マネージャー接続のコードを追加しました。