我在下面写了实用程序代码,用于检查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.")
}
我是否需要添加内容或是否会验证目的地?
答案 0 :(得分:1)
您提供的代码段建立了客户端连接,然后对队列执行JNDI查找。
这将成功检查队列是否存在,并在路由器的JNDI存储中配置为JNDI对象。
这并不一定表明Solace队列是'up'。队列可以存在于JNDI存储中但由于多种原因仍然处于关闭状态,例如在管理上关闭,或者路由器对于保证消息传递不活动。您需要创建一个使用者,以检查队列是否已启动且可访问。