从ActiveMQ1.1开始,支持一种被称为组合目标的技术。这允许使用单个虚拟的JMS目的地来表示一个JMS目的地的集合。

例如,你可以使用组合目的地在一个操作中将消息发送到12个物理队列。或再一次操作中将消息发送到一个主题和一个队列。

可以在创建目的地或将目的地注册到JNDI时,使用逗号分隔将多个目的地组合起来。
比如:

1
FOO.A,FOO.B,FOO.C

表示3个不同的目的地。这可以与队列或主题一起使用,以表示一组3个目的地。如。

1
2
3
// send to 3 queues as one logical operation
Queue queue = new ActiveMQQueue("FOO.A,FOO.B,FOO.C");
producer.send(queue, someMessage);

如果希望混合和匹配目的地的类型,可以使用queue://或topic://前缀来区分目的地的类型。例如,在队列中发布消息,同时也可以对某个主题发出通知

1
2
3
// send to queues and topic one logical operation
Queue queue = new ActiveMQQueue("FOO.A,topic://NOTIFY.FOO.A");
producer.send(queue, someMessage);

还可以在broker配置组合目的地,这样客户端发送到单个目的地的消息将透明地复制到多个物理目的地。

参考:http://activemq.apache.org/composite-destinations.html