activemq 在代理中向特定订阅者发送消息

activemq dispatch messages in broker to specific subscribers

我在 spring 启动时使用 activemq。 我只想将主题发送给特定的订阅者。我知道要实现它,我可以在 JMSListener 上指定选择器,但这意味着我已经向订阅者发送了消息。我想要做的是在代理级别发送消息。 目前我有以下代码:

public Broker broker() throws Exception {
    BrokerService broker = new BrokerService();
    broker.setBrokerName(BROKER_NAME);
    broker.addConnector(BROKER_URL);
    policy.setTopic(USER_TOPIC);
    broker.start();
    return broker.getBroker();
} 

假设我有能够发送两个主题书籍和食物的消息。 对于订阅者 A,只有书籍可用,对于订阅者 B,书籍和食物可用。

问题: 有可能在经纪人层面实现吗?如果有怎么办。我知道有类似目标策略的东西,但我不知道如何使用它:(

消息可以通过多种方式路由和保护到不同的主题或 queue 目的地:

  1. 每个订阅者的单独主题(topic://BOOKS,topic://FOOD)
  2. 单一主题,但使用消息 header (topic://EVENTS) 一种。留言 header "EVENT_TYPE='FOOD'" 或 "EVENT_TYPE='BOOKS'"
  3. 您可以保护目的地,因此只有 'books' 用户可以订阅主题://BOOKS,并且只有 'food' 用户可以订阅主题://FOOD
  4. 使用发布到主题的虚拟主题,订阅 queue 并充分利用上述所有内容。例如发布到:topic://EVENTS 然后订阅:queue://vConsumer.BOOKS.EVENTS, queue://vConsumer.FOOD.EVENTS

链接: