2013-05-31 192 views
0

我想使用Jmeter將消息發送到遠程IBM MQ進行性能測試。我經歷了這個link。但它需要JNDI特定的詳細信息,如QueueConnection Factory,JNDI Name請求隊列,初始上下文工廠&提供程序URL。而我的queu的詳細信息是Qmanager,Qname,主機名,通道,端口在這link共享的代碼中給出。這些屬性是否有任何關係?我可以使用隊列詳細信息配置Jmeter JMS測試嗎?使用Jmeter將消息發送到MQ

在此先感謝。

+0

Ayushi,你有沒有找到一個簡單的方法來完成這項工作?提前致謝! – mandy

+0

曼迪,我沒有找到任何方法使它工作。而且,這在我的項目中不再需要,因此不再尋找解決方案。 – Ayushi

+0

Ayushi,非常感謝您的回覆。順便說一下,我可以使用[鏈接](http://www.ibm.com/developerworks/websphere/library/techarticles/0808_vandekuil/0808_vandekuil.html)中提供的說明完成這項工作。唯一的補充是我必須將所有來自Websphere MQ安裝的MQ jar複製到JMeter/lib中。 – mandy

回答

0

您給出的第一個鏈接使用Java JMS/MQ進行了描述,第二個鏈接顯示了Java MQ(非JMS)。

JMS只是一個抽象層。簡而言之,JMS就像是給所有事物一個綽號。 QCF(QueueConnectionFactory)只是一個具有連接到隊列管理器的所有信息的對象。

DEFINE QCF(myQCF) QMANAGER(MQWT1) CHANNEL(TEST.CHL) HOSTNAME(127.0.0.1) PORT(1415) TRANSPORT(CLIENT) FAILIFQUIESCE(YES) 

JMS隊列僅僅是一個綽號MQ隊列。

DEFINE Q(test.q) QUEUE(TEST.Q1) QMANAGER(MQWT1) TARGCLIENT(JMS) FAILIFQUIESCE(YES) 

因此,在您的JMS代碼,您只需簡單地引用您的QCF(即myQCF)和JMS隊列(即test.q),你是好去。

Hashtable env = new Hashtable(); 
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory"); 
env.put(Context.PROVIDER_URL, ""file:/C:/JNDI-Directory"); 

try 
{ 
    Context ctx = new InitialContext(env); 

    QueueConnectionFactory cf = (QueueConnectionFactory) ctx.lookup("myQCF"); 
    Queue q = (Queue) ctx.lookup("test.q"); 
} 
catch (NamingException e) 
{ 
    System.err.println(e.getLocalizedMessage()); 
    e.printStackTrace(); 
} 
0

它也可以通過beanshell來完成。您可以通過API直接訪問隊列管理器,也可以通過jms綁定公開隊列。第一個更簡單,不需要安裝MQ客戶端。