首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActiveMQ检测新的消费者主题

ActiveMQ检测新的消费者主题
EN

Stack Overflow用户
提问于 2016-10-05 15:07:50
回答 1查看 457关注 0票数 0

我有一个标准的activeMQ经纪人

代码语言:javascript
复制
    private static String localVMurl = "vm://localhost";

    broker = new BrokerService();
    broker.addConnector(localVMurl); 
    broker.start();

一切都很好。我的目标是让消费者用特定的主题连接到代理。一旦检测到此连接,代理将传递消息,如果生产者正在主动生成该主题,或者代理将为该特定主题启动一个新的生成器。然而,要做到这一点,我需要有人检测什么时候一个新的消费者连接和要求一个特定的主题。

我的基本消费代码:

代码语言:javascript
复制
    ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(remoterURL);
    Connection connection = connectionFactory.createConnection();
    connection.setClientID("clinet1");
    connection.start();

    session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    Topic topic = session.createTopic("some_topic");
    MessageConsumer consumer = session.createConsumer(topic);
    consumer.setMessageListener(new MyMessageListener());

我可以从经纪人的日志中看到:

代码语言:javascript
复制
  <161005 11:03:41> [.0.1:64433@5001] DEBUG tRegion - localhost adding destination: topic://ActiveMQ.Advisory.Consumer.Topic.some_topic

所以我知道消费者是连接的,并且订阅了这个主题,我只需要以某种方式捕捉这个事件。

对如何做到这一点有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2016-10-05 15:35:30

咨询信息是你需要的。每次您收到这段代码的消息时,这意味着您将有新的使用者启动或停止。

http://activemq.apache.org/advisory-message.html博士

示例:

代码语言:javascript
复制
    //org.apache.activemq.advisory.AdvisorySupport.getDestinationAdvisoryTopic(Destination)
Destination advisoryDestination = AdvisorySupport.getConsumerAdvisoryTopic(topic )
MessageConsumer consumer = session.createConsumer(advisoryDestination);
consumer.setMessageListener(this);

public void onMessage(Message msg){
    if (msg instanceof ActiveMQMessage){
        try {
            ActiveMQMessage aMsg =  (ActiveMQMessage)msg;
            ConsumerInfo consumer = (ConsumerInfo) aMsg.getDataStructure();
        } catch (JMSException e) {
            log.error("Failed to process message: " + msg);
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39877686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档