举例
比如一个消息要发送给queue1、queue2、queue3,可以分别发。也可以把queue1、queue2、queue3组成一个虚拟的组。发给这个组就行了。
测试一:
客户端的做法。同时往多个queue或者topic上发送消息。
import org.apache.activemq.ActiveMQConnectionFactory; import javax.jms.*; public class QueueSender1 { public static void main(String[] args) throws JMSException, InterruptedException { ConnectionFactory connectionFactory = new ActiveMQConnectionFactory( "failover:(tcp://192.168.25.128:61616,tcp://192.168.25.128:61716)?randomize=false"); Connection connection = connectionFactory.createConnection(); connection.start(); Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); Destination destination = session.createQueue("my-queue,my-queue2"); MessageProducer producer = session.createProducer(destination); for (int i = 0; i < 30; i++) { TextMessage message = session.createTextMessage("message999--" + i); producer.send(message); } session.commit(); session.close(); connection.close(); } }
可以创建两个消费者,分别去消费my-queue1和my-queue2。
测试二:
到xml里面配置。conf中vi activemq.xml
<destinationInterceptors> <virtualDestinationInterceptor> <virtualDestinations> <compositeQueue name="MY.QUEUE"> <forwardTo> <queue physicalName="my-queue" /> <queue physicalName="my-queue2" /> </forwardTo> </compositeQueue> </virtualDestinations> </virtualDestinationInterceptor> </destinationInterceptors>
运行生产者
测试: