我正在寻找一种以编程方式在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类。
答案 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客户机中的属性。 将配置文件指定为系统的配置文件 属性 。使用前面的格式指定 该属性作为系统属性。