使用Jmeter将消息发送到MQ
问题描述:
我想使用Jmeter将消息发送到远程IBM MQ进行性能测试。我经历了这个link。但它需要JNDI特定的详细信息,如QueueConnection Factory,JNDI Name请求队列,初始上下文工厂&提供程序URL。而我的queu的详细信息是Qmanager,Qname,主机名,通道,端口在这link共享的代码中给出。这些属性是否有任何关系?我可以使用队列详细信息配置Jmeter JMS测试吗?使用Jmeter将消息发送到MQ
在此先感谢。
答
您给出的第一个链接使用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客户端。
Ayushi,你有没有找到一个简单的方法来完成这项工作?提前致谢! – mandy
曼迪,我没有找到任何方法使它工作。而且,这在我的项目中不再需要,因此不再寻找解决方案。 – Ayushi
Ayushi,非常感谢您的回复。顺便说一下,我可以使用[链接](http://www.ibm.com/developerworks/websphere/library/techarticles/0808_vandekuil/0808_vandekuil.html)中提供的说明完成这项工作。唯一的补充是我必须将所有来自Websphere MQ安装的MQ jar复制到JMeter/lib中。 – mandy