我们在 junit 测试中使用了一些 activemq 操作(通过 jmx)。
我们有两个主要环境:
1) 本地
2) 质量保证
作为 JMS 操作代码的一部分,我们使用 activemq objectName。
问题是 - 在一个环境中
Objectname = 'org.apache.activemq:type=Broker,brokerName=localhost'
在另一个环境中:
Objectname = 'org.apache.activemq:BrokerName=localhost,Type=Broker'
不幸的是,我们的代码使用了对象名称的硬编码名称,如下所示:
...
String operationName = "removeQueue";
String parameter = q.getName();
ObjectName activeMQ = new ObjectName(
"org.apache.activemq:type=Broker,brokerName=localhost");
if (parameter != null) {
Object[] params = { parameter };
String[] sig = { "java.lang.String" };
conn.invoke(
activeMQ,
operationName,
params,
sig);
}
else {
conn.invoke(
activeMQ,
operationName,
null,
null);
}
}
catch (Exception e) {
throw new RuntimeException(
e);
}
这当然适用于一个环境,但不适用于另一个环境,有没有办法设置对象名?或在连接到 JMS 之前获取对象名称(我们使用的是 JmsTemplate)
谢谢