2013-01-04 47 views
0

我在activemq服务器上有10个队列。 我有生产者想要在其中一个队列上推送消息(生产者将选择队列随机运行时间将消息放入队列中),如何在createProducer方法中传递目标名称。 我知道我需要传递一个类型为Destination的对象。生产者会知道服务器上的队列名称。是否可以将字符串传递(或转换)为目标对象类型并将其传递给创建生产者方法。在activemq服务器上获取queuename来推送消息

谢谢

回答

1

如果我明白你的问题;

如果您正在运行Java并拥有有效会话,则可以使用Session.createQueue();

// Create a Destination using the queue name 
Destination destination = session.createQueue("queue name"); 

// Create a MessageProducer from the Session to the Queue 
MessageProducer producer = session.createProducer(destination); 

Here is a complete example of doing this at the Apache site

+0

感谢您回复Joachim,我知道这样做,但是如果我已经在服务器上有一个物理队列,我还需要createQueue吗? (我已经在服务器上创建了一些其他程序(类说)的物理队列)。如果我已经有服务器上的队列,我知道这个名字,那么我不能说类似“session.createProducer(”queuename作为字符串类型>>)。有没有办法将字符串转换为目标,因此我不需要调用(我知道createQueue不会再创建队列,如果已经存在的话) – Manglesh

+0

@Manglesh createQueue是一个有点令人困惑的名字,因为它实际上并没有创建队列。 ;'给定一个队列名创建一个队列标识......注意这个方法不是用来创建物理队列的。_队列的物理创建是一个管理任务,不能由JMS API发起。再次,我可能无法正确理解你的问题...? –

+0

我有3个部分(我的应用程序,第一个生产者,第二个在服务器上创建物理队列,第三个消费者)我已经在第二部分创建了队列。 H我希望生产者/消费者用来推送和接收消息的服务器上的物理队列。第二部分,在创建队列的同时,我通过生产者发送垃圾邮件并由接收者丢弃来创建队列。创建队列运行时间的原因是因为我会知道在运行时创建的队列数量。所以我使用这种方法,而不是通过在xml中定义来预先创建队列 – Manglesh

相关问题