0

我在下面编写了实用程序代码来检查 Solace MQ 目标是否已启动,而无需向目标发送任何消息。

...

try {

env = new Hashtable<String, Object>();
env.put(InitialContext.INITIAL_CONTEXT_FACTORY, "com.solacesystems.jndi.SolJNDIInitialContextFactory");
env.put(InitialContext.PROVIDER_URL, urlStr);
env.put(Context.SECURITY_PRINCIPAL, principalStr);
env.put(Context.SECURITY_CREDENTIALS, pwdStr);

initialContext = new InitialContext(env);
cf = (SolConnectionFactory) initialContext.lookup(jndiname);

connection = cf.createConnection();

SolDestination dest = (SolDestination) initialContext.lookup(destString);

System.out.println("Successfully connected.")

} catch (Exception e) {
    System.out.println("Failed to connect.")
}

我需要添加一些东西还是会验证目的地?

4

1 回答 1

1

您提供的代码片段建立了一个客户端连接,然后对队列进行 JNDI 查找。

这将成功地检查队列是否存在并在路由器的 JNDI 存储中作为 JNDI 对象提供。

这并不一定表明 Solace 队列已“启动”。队列可以存在于 JNDI 存储中,但由于多种原因仍处于关闭状态,例如被管理性关闭,或者路由器对于保证消息传递不处于活动状态。您需要创建一个使用者以检查队列是否已启动且可访问。

于 2017-07-31T18:31:11.667 回答