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 目的地:
- 每个订阅者的单独主题(topic://BOOKS,topic://FOOD)
- 单一主题,但使用消息 header (topic://EVENTS)
一种。留言 header "EVENT_TYPE='FOOD'" 或 "EVENT_TYPE='BOOKS'"
- 您可以保护目的地,因此只有 'books' 用户可以订阅主题://BOOKS,并且只有 'food' 用户可以订阅主题://FOOD
- 使用发布到主题的虚拟主题,订阅 queue 并充分利用上述所有内容。例如发布到:topic://EVENTS 然后订阅:queue://vConsumer.BOOKS.EVENTS, queue://vConsumer.FOOD.EVENTS
链接:
- ActiveMQ 授权:http://activemq.apache.org/security.html
- ActiveMQ 虚拟主题:http://activemq.apache.org/virtual-destinations.html
我在 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 目的地:
- 每个订阅者的单独主题(topic://BOOKS,topic://FOOD)
- 单一主题,但使用消息 header (topic://EVENTS) 一种。留言 header "EVENT_TYPE='FOOD'" 或 "EVENT_TYPE='BOOKS'"
- 您可以保护目的地,因此只有 'books' 用户可以订阅主题://BOOKS,并且只有 'food' 用户可以订阅主题://FOOD
- 使用发布到主题的虚拟主题,订阅 queue 并充分利用上述所有内容。例如发布到:topic://EVENTS 然后订阅:queue://vConsumer.BOOKS.EVENTS, queue://vConsumer.FOOD.EVENTS
链接:
- ActiveMQ 授权:http://activemq.apache.org/security.html
- ActiveMQ 虚拟主题:http://activemq.apache.org/virtual-destinations.html