使用Jmeter将消息发送到MQ

问题描述:

我想使用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

您给出的第一个链接使用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(); 
} 

它也可以通过beanshell来完成。您可以通过API直接访问队列管理器,也可以通过jms绑定公开队列。第一个更简单,不需要安装MQ客户端。