Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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中使用触发器?_Ibm Mq - Fatal编程技术网

Ibm mq 我们如何在IBM MQ中使用触发器?

Ibm mq 我们如何在IBM MQ中使用触发器?,ibm-mq,Ibm Mq,我已经访问了ibm站点,但我找不到使用触发器的实际逻辑 我已经完成了下面的代码,但是我怎样才能收到来自触发器的提示呢 public void setTrigger() { try{ Queue = QMGR.accessQueue(queueName, (MQC.MQOO_INQUIRE+MQC.MQOO_SET)); Queue.setTriggerControl(1); Queue.set

我已经访问了ibm站点,但我找不到使用触发器的实际逻辑

我已经完成了下面的代码,但是我怎样才能收到来自触发器的提示呢

public void setTrigger()
        {
        try{
            Queue = QMGR.accessQueue(queueName, (MQC.MQOO_INQUIRE+MQC.MQOO_SET));
            Queue.setTriggerControl(1);
            Queue.setTriggerType(2);
            }
        catch(Exception e){
            System.out.println("------------------------");
            System.out.println("trigger method");
            System.out.println("------------------------");
            System.out.println(e);
            System.out.println("************************");
            }
        }

我怎样才能在收到消息时得到提示。

首先,不要通过应用程序进行触发设置。这是浪费时间

其次,阅读并理解以下MQ网页:

第三,对于Java应用程序,创建一个批处理文件或Unix脚本来设置任何环境变量,即CLASSPATH,并在进程的APPLICID字段中设置批处理文件或Unix脚本

第四,在为队列和进程定义MQSC之后,不要忘记启动触发器监视器(否则不会触发任何内容)

第五,如果将Trigger Type设置为First,则绝对确保触发的应用程序在退出之前读取队列中的每条消息

第六,触发(触发器优先)仅适用于消息之间存在较大间隙或消息突发之间存在较大间隙的场景。如果每秒钟或每2秒接收一次消息,则触发不好,因为应用程序每秒钟或每2秒启动、处理和退出一次。如果它是Java应用程序,您将始终拥有JVM加载时间


第七,如果您真正想要的是消息回调(异步)而不是MQ触发,那么请阅读:

触发用于允许MQ触发进程来使用消息。在某些情况下,触发类型要求应用程序将队列设置回触发状态,这是您发布的代码试图执行的操作。您是否希望MQ实际启动Java进程以使用队列中的消息?是的,我希望启动Java进程以使用队列中的消息,每当队列中有消息时。是否有理由不在后台运行MDB之类的进程?是否仍建议比较回退计数和回退阈值以确保正在检索的消息不是有毒消息?是,并且有毒消息应放在应用程序回退队列中,而不是放在系统的死信队列中。