0

我们在 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)

谢谢

4

0 回答 0