gpt4 book ai didi

java - ActiveMQ 消费者/生产者连接监听器

转载 作者:搜寻专家 更新时间:2023-11-01 02:18:26 26 4
gpt4 key购买 nike

我似乎找不到在 ActiveMQ(Java 版本)中监听新的生产者和消费者连接(或连接中断)的方法。我希望能够告诉消费者(或者他们可以自己发现)生产者的连接断开了。反过来(生产者发现某个消费者断开连接)也是必需的。

我会很感激一些帮助。

最佳答案

我认为您想在特定目的地(特定队列或主题)上监听新的生产者和消费者。是吗?

您可以实例化 ConsumerEventSource 和 ProducerEventSource,并通过分别调用它们的 setConsumerListener 和 setProducerListener 来注册您自己的监听器。

所以:

Connection conn = yourconnection; // the connection your listener will use
Destination dest = yourdestination; // the destination you're paying attention to
ConsumerEventSource source = new ConsumerEventSource(conn, dest);
source.setConsumerListener(new ConsumerListener() {

public void onConsumerEvent(ConsumerEvent event) {
if (event.isStarted()) {
System.out.println("a new consumer has started - " + event.getConsumerId());
} else {
System.out.println("a consumer has dropped - " + event.getConsumerId());
}
}

});

如果查看 ConsumerEventSource 或 ProducerEventSource 的代码,您会发现它们是简单的对象,使用 AdvisorySupport 的方法来监听一个特殊的咨询主题,其业务是广播有关生产者和消费者的新闻。您可能会通过阅读这些类的源代码了解更多信息。

您对“连接”的使用可能存在问题;在 ActiveMQ 领域(它是 JMS 领域的一个子集),“连接”是一个与特定目的地无关的低级对象。特定客户端从连接创建“ session ”——仍然不特定于目的地——然后创建特定于目的地的 QueueSender、QueueReceiver、TopicPublisher 或 TopicSubscriber。当它们被创建时,或者当创建它们的 session 结束时,这些就是您想要听到的事件,并且如果您使用上面的代码将会听到。

关于java - ActiveMQ 消费者/生产者连接监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1702755/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com