Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ibm mq 事件触发_Ibm Mq - Fatal编程技术网

Ibm mq 事件触发

Ibm mq 事件触发,ibm-mq,Ibm Mq,我有如下队列定义: DEFINE QLOCAL(TRIG.QLOCAL) + DESCR('Example Queue for Triggering') + DEFPRTY(0) + DEFSOPT(SHARED) + GET(ENABLED) + MAXDEPTH(5000) + MAXMSGL(4194304) + MSGDLVSQ(PRIORITY) + PUT(

我有如下队列定义:

DEFINE QLOCAL(TRIG.QLOCAL) + 
       DESCR('Example Queue for Triggering') + 
       DEFPRTY(0) + 
       DEFSOPT(SHARED) + 
       GET(ENABLED) + 
       MAXDEPTH(5000) + 
       MAXMSGL(4194304) + 
       MSGDLVSQ(PRIORITY) + 
       PUT(ENABLED) + 
       QDEPTHHI(80) +
       QDPHIEV(ENABLED)+
       RETINTVL(999999999) + 
       TRIGTYPE(EVERY) + 
       PROCESS(TRIG.PROCESS) + 
       INITQ(TRIG.INITQ) + 
       USAGE(NORMAL) + 
       REPLACE 
我定义了如下流程:

DEFINE PROCESS(TRIG.PROCESS) APPLTYPE(UNIX) +
       APPLICID(/appn/sy31/QdepthHiAlert.sh) +
       ENVRDATA(' ') +
       USERDATA(' ') 
       DESCR('PROCESS FOR TESTING QDEPTH HIGH EVENT') +
       REPLACE
   SERVICE(TRIGGER_MONITOR)                STATUS(RUNNING)
   PID(49610840)                           SERVTYPE(SERVER)
   CONTROL(QMGR)                           STARTCMD(/usr/bin/runmqtrm)
   STARTARG(-m PACOHB20 -q SYSTEM.DEFAULT.INITIATION.QUEUE)
我有一个触发器监视器作为服务运行,如下所示:

DEFINE PROCESS(TRIG.PROCESS) APPLTYPE(UNIX) +
       APPLICID(/appn/sy31/QdepthHiAlert.sh) +
       ENVRDATA(' ') +
       USERDATA(' ') 
       DESCR('PROCESS FOR TESTING QDEPTH HIGH EVENT') +
       REPLACE
   SERVICE(TRIGGER_MONITOR)                STATUS(RUNNING)
   PID(49610840)                           SERVTYPE(SERVER)
   CONTROL(QMGR)                           STARTCMD(/usr/bin/runmqtrm)
   STARTARG(-m PACOHB20 -q SYSTEM.DEFAULT.INITIATION.QUEUE)
以下是我的问题:

  • 我想,所有的触发器消息都将由触发器监视器脚本处理。如果我们不在
    INITQ
    上配置它,与队列关联的进程将不会运行。对吗
  • 如果是,我们的触发器监视器没有在队列的
    INITQ(TRIG.INITQ)
    上运行。我们是否也必须在
    INITQ
    上运行触发器监视器
  • 当我们为触发配置传输队列时,我们已经定义了触发数据和进程定义。虽然我们没有在启动队列上配置触发器监视器,但是通道是启动的,因为我们在
    system.channel.initiation.queue上有
    runmqchi
    。那么
    runmqtrm
    runmqchi
    的功能类似吗
  • 在这里,我们有每个消息和队列深度高事件的触发。在这两种情况下,触发器消息将被置于相同的
    INITQ
    。那么,我们如何知道我们收到了什么样的警报呢

  • 好的,让我们一次拿一个

    我想,所有的触发器消息都将由触发器处理 监视脚本。如果我们不在INITQ上配置它,那么哪个进程 与队列关联的将不会运行。对吗

    如果我理解您的问题,那就是如果启动队列中没有任何侦听内容,是否会启动进程。这是正确的。应用程序队列必须设置
    TRIGGER
    并指定
    INITQ
    值。指定的启动队列必须具有打开的输入句柄,以便MQ格式化和放置触发器消息

    如果是,我们的触发器监视器没有在INITQ:TRIG.INITQ上运行。 我们是否也必须在INITQ上运行触发器监视

    对。队列的
    INITQ
    是QMgr放置任何触发消息的位置。除非启动队列上有一个打开的输入句柄,否则QMgr不会放置触发器消息,并且该句柄最好来自触发器监视器,否则它不会工作

    当我们配置传输队列时,为了触发,我们 已定义触发器数据和流程定义。虽然我们 未在启动队列通道上配置触发器监视器 自从我们在INITQ上运行mqchi后,就开始运行了。所以runmqtrm和runmqchi 功能相似

    通道启动器比触发器监视器更能容忍草率的配置。从通道定义很容易计算出它使用的传输队列。因此,MQ指出,如果管理员定义了类型为
    XMITQ
    的队列,将其设置为
    TRIGGER
    ,那么目的必须是启动通道。然后,它从通道def向后工作,以发现哪个通道与该队列关联

    但是对于
    runmqtrm
    ,没有这样的安全假设。您必须将队列的
    INITQ
    PROCESS
    属性中的点连接到触发器监视器,侦听指定的
    INITQ
    和关联的进程,正确读取触发器消息,然后按预期处理队列

    在这里,每个消息都有触发,队列深度也很高 事件在这两种情况下,触发器消息将放在相同的位置 INITQ。那么,我们如何知道我们收到了什么样的警报呢

    这是两件不同的事情。队列上只能指定一种触发类型,它是
    第一个
    深度
    每一个
    中的一种。您还可以指定当队列深度超过某个阈值时,QMgr将向事件队列(而不是启动队列)发出事件消息

    这两件事是相关的,但仪器的类型完全不同。触发仪表设计用于在特定条件下启动过程。队列深度事件旨在向侦听事件队列的监视代理提供实时操作信息



    有关触发的更多信息,包括围绕一个有用的应用程序构建的迷你教程和实现该应用程序的示例脚本,请参见

    ,感谢您的详细解释。读完这篇文章后,我又想起了两个问题。1.
    runmqchi
    是否可以反向工作?每个触发器消息都有导致触发的队列的名称,并且需要在其负载中调用该进程,对吗?如果是这样,为什么它需要回溯?2.对于触发器类型为
    深度的队列
    。当
    CURDEPTH
    跨越
    MAXDEPTH
    的80%时,它将生成
    queue\u depth\u high
    事件。如果队列已满,它会生成
    queue\u depth\u high
    queue\u full
    事件吗?如果它生成
    queue_full
    事件,我们如何区分高_深度和完整事件?“我们如何区分高_深度和完整事件?”MQCFH中的原因码对于QDepth high事件为2224,对于QFull事件为2053。请参阅:通道启动器不再需要定义进程,也不再需要队列的
    process
    属性中的通道名称。当XmitQ被触发时,
    runmqchi
    必须通过将通道中指定的
    XmitQ
    值与被触发的队列名称相匹配来确定启动哪个通道。然而,对于IBM来说,让
    runmqchi
    这样做要比对客户定义流程提出严格要求容易得多,这样他们得到的PMR就更少了。“感谢您的详细解释。”详细程度反映出这是一个由4部分组成的问题。我别无选择(不客气!)