Java 如何为activemq中的每个使用者创建单独的队列?

Java 如何为activemq中的每个使用者创建单独的队列?,java,spring,jms,activemq,Java,Spring,Jms,Activemq,我使用的是activemq(对我来说很新),我有一个生产者和几个消费者 问题是,我想为特定的消费者发送信息。 我读过,但也读过,用过,也读过一些 另一种方法听起来不错,但我不确定如何为我的每个奴隶创建这些队列。 我的每个从属服务器都有一个ID(uuid),我可以在创建侦听器时使用它-如下所示: <jms:listener-container container-type="default" connection-factory="jmsConnectionF

我使用的是activemq(对我来说很新),我有一个生产者和几个消费者

问题是,我想为特定的消费者发送信息。 我读过,但也读过,用过,也读过一些

另一种方法听起来不错,但我不确定如何为我的每个奴隶创建这些队列。 我的每个从属服务器都有一个ID(uuid),我可以在创建侦听器时使用它-如下所示:

<jms:listener-container
        container-type="default"
        connection-factory="jmsConnectionFactory"
        acknowledge="auto">
    <jms:listener destination="slave.tasks.${slave.id}" ref="jmsActivityListener" method="onMessage" />
</jms:listener-container>
我的问题是:

1) 这样做(定义每个消费者的队列)吗

2) 如何生成这个salve.id值(我不希望用户填充它,因为它必须是唯一的)


感谢营救行动中的虚拟主题

虚拟主题背后的思想是制作者以通常的JMS方式发送到主题。消费者可以继续使用JMS规范中的主题语义。但是,如果主题是虚拟的,则使用者可以从物理队列中使用逻辑主题订阅,从而允许许多使用者在许多计算机和线程上运行,以平衡负载。 例如,假设我们有一个名为VirtualTopic.Orders的主题。(其中前缀VirtualTopic.表示其为虚拟主题)。从逻辑上讲,我们希望向系统A和B发送订单。现在,通过常规持久主题,我们将为clientID_A和“A”以及clientID_B和“B”创建一个JMS消费者。 有了虚拟主题,我们就可以直接进入并消费到队列消费者.A.VirtualTopic.Orders成为系统A的消费者,或消费到消费者.B.VirtualTopic.Orders成为系统B的消费者。 我们现在可以为每个系统拥有一个消费者池,然后这些消费者为系统a或B竞争消息,这样系统a的所有消息都只处理一次,系统B的处理方式也类似



您的制作人可以将消息发送到主题
“VirtualTopic.tasks”
,这些消息将发送到所有
消费者。*.VirtualTopic.tasks

感谢您的回复,但我认为这不会解决我的问题,因为我想向特定消费者(不是所有消费者)发送消息。如果我理解正确,这更像是一个主题解决方案,这是我想要避免的,因为消息必须发送给一个消费者(比如说,100个消费者中的一个),所以我不想使用主题(除其他原因外),如果您在jmsConnectionFactory中使用具有管理员角色的用户/pwd,您的目的地将在运行时自动创建,但是,您需要找到一个解决方案,将每个消费者映射到他们的生活中——我知道这一点,并且我正在使用admins creds。但是我需要一种在从机端配置侦听器的方法——为此,我需要知道不属于配置的id(正如我在问题中提到的)您可以使用advisory或jmx列出创建的队列或连接的使用者,但什么样的信息可以让您决定要向哪个使用者发送消息?我的从属服务器向我的主服务器发送信息,当它们发送信息时-它们将ID附加到这些对象。当主机希望在其中一个对象上执行任务时,它必须知道向哪个从机发送该请求(这些对象上存在数据)
slave.id=XXXXXXX
<jms:listener-container
        container-type="default"
        connection-factory="jmsConnectionFactory"
        acknowledge="auto">
    <jms:listener destination="Consumer.#{T(java.lang.System).currentTimeMillis()}.VirtualTopic.tasks" ref="jmsActivityListener" method="onMessage" />
</jms:listener-container>