如何在Java IBM MQ客户端中设置没有mqclient.ini文件的节属性?

时间:2018-11-14 15:55:39

标签: java ibm-mq

我正在寻找一种以编程方式在IBM MQ Java客户机应用程序内设置客户机属性的方法。我确实意识到IBM提供了一种configuring MQ Clients using a mqclient.ini file的方式,但是由于我正在处理的应用程序的部署和分发的性质,不可能使用这样的文件。因此,我想在我的代码的connetion配置块内设置一个通常在ini文件中定义的节属性。

此外,我知道可以将某些属性设置为环境变量或Java命令行参数,但是由于上述相同的原因,这不是可行的解决方法。

我特别想将TCP节中的KeepAlive属性设置为YES。 到目前为止,我已经尝试使用MQQueueConnectionFactory通过以下方式实现这一目标:

connectionFactory.setStringProperty("KeepAlive", "YES");

connectionFactory.setStringProperty("com.ibm.mq.cfg.TCP.KeepAlive", "YES");

connectionFactory.setBooleanProperty("KeepAlive", true);

connectionFactory.setBooleanProperty("com.ibm.mq.cfg.TCP.KeepAlive", true);

但是,这些都不起作用。

出于记录目的,我正在使用JMS版本8的IBM MQ类。

1 个答案:

答案 0 :(得分:1)

您可以为此目的使用Java系统属性。

IBM MQ的JMS类将读取以下Java系统属性,以指示其使用TCP KeepAlive:

com.ibm.mq.cfg.TCP.KeepAlive=YES

要以编程方式进行设置,例如,使用System.setProperty方法:

System.setProperty("com.ibm.mq.cfg.TCP.KeepAlive","YES");

Oracle在Class System中记录了setProperty方法:

  

setProperty

public static String setProperty(String key,
                                 String value)
     

设置由指定键指示的系统属性。


IBM“松散”文档在IBM MQ v8知识中心页面The IBM MQ classes for JMS configuration file中将mqclient.ini设置指定为系统属性:

  

覆盖IBM MQ MQI客户端配置文件中指定的属性

     

IBM MQ MQI客户机配置文件也可以指定属性   用于为JMS配置IBM MQ类。但是,属性   IBM MQ MQI客户机配置文件中指定的值仅在以下情况下适用   一个应用程序以客户端模式连接到队列管理器。

     

如果需要,您可以覆盖IBM MQ MQI客户机中的任何属性   通过将配置文件指定为IBM MQ类中的属性来配置文件   JMS配置文件。覆盖IBM MQ MQI中的属性   客户端配置文件,请使用以下格式的条目   JMS配置文件的IBM MQ类:

com.ibm.mq.cfg. stanza. propName = propValueCopy
     

条目中的变量具有以下含义:

     
      
  • IBM MQ MQI客户机配置文件中包含属性的节的名称

  •   
  • propName 在IBM MQ MQI客户端配置文件中指定的属性名称

  •   
  • propValue 属性的值将覆盖IBM MQ MQI客户端配置文件中指定的属性的值

  •   
     

或者,您可以覆盖IBM MQ MQI客户机中的属性。    将配置文件指定为系统的配置文件   属性 。使用前面的格式指定   该属性作为系统属性。