无法将消息放入回退队列消息代理

时间:2015-06-26 08:42:33

标签: ibm-mq

我开发了一个从MQInput获取消息的流,通过调用存储过程将其插入到DB中,然后将消息转储到另一个队列。消息在XMLNSC中。

流程处于运行状态2个月,但现在我遇到了奇怪的问题。

3天后我得到了这种例外:

    (0x01000000:Name):RecoverableException = (
        (0x03000000:NameValue):File                 = '/build/slot1/S900_P/src/DataFlowEngine/MessageServices/ImbDataFlowNode.cpp' (CHARACTER)
        (0x03000000:NameValue):Line                 = 1153 (INTEGER)
        (0x03000000:NameValue):Function             = 'ImbDataFlowNode::createExceptionList' (CHARACTER)
        (0x03000000:NameValue):Type                 = 'ComIbmComputeNode' (CHARACTER)
        (0x03000000:NameValue):Name                 = 'SiebelBOQManagement#FCMComposite_1_2' (CHARACTER)
        (0x03000000:NameValue):Label                = 'SiebelBOQManagement.Compute' (CHARACTER)
        (0x03000000:NameValue):Catalog              = 'BIPmsgs' (CHARACTER)
        (0x03000000:NameValue):Severity             = 3 (INTEGER)
        (0x03000000:NameValue):Number               = 2230 (INTEGER)
        (0x03000000:NameValue):Text                 = 'Node throwing exception' (CHARACTER)
        (0x01000000:Name     ):Insert               = (
          (0x03000000:NameValue):Type = 14 (INTEGER)
          (0x03000000:NameValue):Text = 'SiebelBOQManagement.Compute' (CHARACTER)
        )
        (0x01000000:Name     ):RecoverableException = (
          (0x03000000:NameValue):File                 = '/build/slot1/S900_P/src/DataFlowEngine/ImbRdl/ImbRdlStatementGroup.cpp' (CHARACTER)
          (0x03000000:NameValue):Line                 = 666 (INTEGER)
          (0x03000000:NameValue):Function             = 'SqlStatementGroup::execute' (CHARACTER)
          (0x03000000:NameValue):Type                 = 'ImbESQLManager' (CHARACTER)
          (0x03000000:NameValue):Name                 = 'ImbESQLManager' (CHARACTER)
          (0x03000000:NameValue):Label                = 'ImbESQLManager' (CHARACTER)
          (0x03000000:NameValue):Catalog              = 'BIPmsgs' (CHARACTER)
          (0x03000000:NameValue):Severity             = 3 (INTEGER)
          (0x03000000:NameValue):Number               = 2488 (INTEGER)
          (0x03000000:NameValue):Text                 = 'Error detected, rethrowing' (CHARACTER)
          (0x01000000:Name     ):Insert               = (
            (0x03000000:NameValue):Type = 5 (INTEGER)
            (0x03000000:NameValue):Text = '.SiebelBOQManagement_Compute.Main' (CHARACTER)
          )
          (0x01000000:Name     ):Insert               = (
            (0x03000000:NameValue):Type = 5 (INTEGER)
            (0x03000000:NameValue):Text = '20.3' (CHARACTER)
          )
          (0x01000000:Name     ):Insert               = (
            (0x03000000:NameValue):Type = 5 (INTEGER)
            (0x03000000:NameValue):Text = 'LOGDEBUG(CAST(startTime AS CHARACTER) || '|SiebelBOQManagement|Request|' || CAST(ASBITSTREAM(InputRoot.XMLNSC) AS CHARACTER CCSID 1208), 'Siebel');' (CHARACTER)
          )
          (0x01000000:Name     ):RecoverableException = (
            (0x03000000:NameValue):File                 = '/build/slot1/S900_P/src/DataFlowEngine/ImbRdl/ImbRdlRoutine.cpp' (CHARACTER)
            (0x03000000:NameValue):Line                 = 1450 (INTEGER)
            (0x03000000:NameValue):Function             = 'SqlRoutine::invoke' (CHARACTER)
            (0x03000000:NameValue):Type                 = 'ImbESQLManager' (CHARACTER)
            (0x03000000:NameValue):Name                 = 'ImbESQLManager' (CHARACTER)
            (0x03000000:NameValue):Label                = 'ImbESQLManager' (CHARACTER)
            (0x03000000:NameValue):Catalog              = 'BIPmsgs' (CHARACTER)
            (0x03000000:NameValue):Severity             = 3 (INTEGER)
            (0x03000000:NameValue):Number               = 2934 (INTEGER)
            (0x03000000:NameValue):Text                 = 'Error occured in procedure' (CHARACTER)
            (0x01000000:Name     ):Insert               = (
              (0x03000000:NameValue):Type = 5 (INTEGER)
              (0x03000000:NameValue):Text = 'LOGDEBUG' (CHARACTER)
            )
            (0x01000000:Name     ):RecoverableException = (
              (0x03000000:NameValue):File                 = '/build/slot1/S900_P/src/DataFlowEngine/ImbRdl/ImbRdlExternalJava.cpp' (CHARACTER)
              (0x03000000:NameValue):Line                 = 1458 (INTEGER)
              (0x03000000:NameValue):Function             = 'SqlExternalJavaMethod::executeJavaMethod' (CHARACTER)
              (0x03000000:NameValue):Type                 = '' (CHARACTER)
              (0x03000000:NameValue):Name                 = '' (CHARACTER)
              (0x03000000:NameValue):Label                = '' (CHARACTER)
              (0x03000000:NameValue):Catalog              = 'BIPmsgs' (CHARACTER)
              (0x03000000:NameValue):Severity             = 3 (INTEGER)
              (0x03000000:NameValue):Number               = 2919 (INTEGER)
              (0x03000000:NameValue):Text                 = 'The following error occurred during execution of an Java Method call' (CHARACTER)
              (0x01000000:Name     ):Insert               = (
                (0x03000000:NameValue):Type = 5 (INTEGER)
                (0x03000000:NameValue):Text = '.LOGDEBUG' (CHARACTER)
              )
              (0x01000000:Name     ):Insert               = (
                (0x03000000:NameValue):Type = 5 (INTEGER)
                (0x03000000:NameValue):Text = '1.1' (CHARACTER)
              )
              (0x01000000:Name     ):Insert               = (
                (0x03000000:NameValue):Type = 5 (INTEGER)
                (0x03000000:NameValue):Text = 'com.ufone.utility.ProvLogger.LogDebug' (CHARACTER)
              )
              (0x01000000:Name     ):Insert               = (
                (0x03000000:NameValue):Type = 5 (INTEGER)
                (0x03000000:NameValue):Text = ''1435077650205|SiebelBOQManagement|Request|<Message MessageId="1-7XUQQC" IntObjectName="PTCL Order Entry EAI IO" MessageType="Integration Object" IntObjectFormat="Siebel Hierarchical">.......</Message>
 )
          (0x01000000:Name     ):RecoverableException = (
            (0x03000000:NameValue):File     = '/build/slot1/S900_P/src/DataFlowEngine/ImbRdl/ImbRdlExternalJava.cpp' (CHARACTER)
            (0x03000000:NameValue):Line     = 1339 (INTEGER)
            (0x03000000:NameValue):Function = 'SqlExternalJavaMethod::executeJavaMethod' (CHARACTER)
            (0x03000000:NameValue):Type     = '' (CHARACTER)
            (0x03000000:NameValue):Name     = '' (CHARACTER)
            (0x03000000:NameValue):Label    = '' (CHARACTER)
            (0x03000000:NameValue):Catalog  = 'BIPmsgs' (CHARACTER)
            (0x03000000:NameValue):Severity = 3 (INTEGER)
            (0x03000000:NameValue):Number   = 2917 (INTEGER)
            (0x03000000:NameValue):Text     = 'Java Exception calling CallStaticVoidMethodA.' (CHARACTER)
            (0x01000000:Name     ):Insert   = (
              (0x03000000:NameValue):Type = 5 (INTEGER)
              (0x03000000:NameValue):Text = 'com.ufone.utility.ProvLogger.LogDebug' (CHARACTER)
            )
            (0x01000000:Name     ):Insert   = (
              (0x03000000:NameValue):Type = 5 (INTEGER)
              (0x03000000:NameValue):Text = 'java.lang.OutOfMemoryError: Java heap space' (CHARACTER)
            )
            (0x01000000:Name     ):Insert   = (
              (0x03000000:NameValue):Type = 5 (INTEGER)
              (0x03000000:NameValue):Text = '' (CHARACTER)
            )
          )
        )
      )

当我收到此错误时,我知道内存已满,我停止了流程。一天后,我无法在代码中找到任何特定问题,并再次启动流程。

请注意,我记录的XML长度为6000行。

昨天我在跟踪中得到例外情况:

  (0x01000000:Name):RecoverableException = (
(0x03000000:NameValue):File     = '/build/slot1/S900_P/src/DataFlowEngine/MQLibrary/linklib/ImbMqInputNode.cpp' (CHARACTER)
(0x03000000:NameValue):Line     = 2528 (INTEGER)
(0x03000000:NameValue):Function = 'ImbCommonInputNode::eligibleForBackout' (CHARACTER)
(0x03000000:NameValue):Type     = 'ComIbmMQInputNode' (CHARACTER)
(0x03000000:NameValue):Name     = 'SiebelBOQManagement#FCMComposite_1_6' (CHARACTER)
(0x03000000:NameValue):Label    = 'SiebelBOQManagement.MQ Input' (CHARACTER)
(0x03000000:NameValue):Catalog  = 'BIPmsgs' (CHARACTER)
(0x03000000:NameValue):Severity = 3 (INTEGER)
(0x03000000:NameValue):Number   = 2613 (INTEGER)
(0x03000000:NameValue):Text     = 'Failed to put message to the back out queue' (CHARACTER)
(0x01000000:Name     ):Insert   = (
  (0x03000000:NameValue):Type = 5 (INTEGER)
  (0x03000000:NameValue):Text = 'SYSTEM.DEAD.LETTER.QUEUE' (CHARACTER)
)
(0x01000000:Name     ):Insert   = (
  (0x03000000:NameValue):Type = 2 (INTEGER)
  (0x03000000:NameValue):Text = '2' (CHARACTER)
)
(0x01000000:Name     ):Insert   = (
  (0x03000000:NameValue):Type = 2 (INTEGER)
  (0x03000000:NameValue):Text = '2056' (CHARACTER)
)

) )

我无法找到根本原因。至于一个月,Debug程序工作正常,它在日志中写了整个XML,现在流程给了我异常的行为。此外,还为输入和输出队列配置了BOQ。

1 个答案:

答案 0 :(得分:0)

从上述错误中,有两种可能导致此错误。

  1. QMGR文件系统可能已满。请检查/ var / mqm文件系统。如果您对此文件系统没有任何问题,请参阅第2点
  2. 队列文件的大小可能大于用户文件限制大小。请使用ulimit -f检查文件限制大小。并将其与队列文件大小进行比较。我怀疑这可能会导致你的问题。如果是这样,您可以使用'ulimit -f 4194302'(2GB)来增加大型队列的文件系统。