2017-07-27 167 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存儲中,但由於許多原因(如管理性關閉)或路由器未保證消息傳遞而處於活動狀態,該隊列仍然存在。您需要創建一個消費者才能檢查隊列是否已啓動並可以訪問。