2017-07-27 154 views
0

我已经写下了以下实用程序代码,以检查Solace MQ目标是否已启动而不发送任何消息到目标。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.") 
} 

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

回答

1

您提供的代码片段建立客户端连接,然后为队列执行JNDI查找。

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

这并不一定表明Solace队列是'up'。队列可以存在于JNDI存储中,但由于许多原因(如管理性关闭)或路由器未保证消息传递而处于活动状态,该队列仍然存在。您需要创建一个消费者才能检查队列是否已启动并可以访问。