6
我正在構建一個創建主題樹的擴散解決方案。如何刪除沒有訂閱者的主題?
我按需創建主題以反映從RabbitMQ Feed收到的值。每個主題都有一個內存開銷,所以我希望在一段時間內沒有訂閱者時刪除該主題。
這可以通過統一的Java API完成嗎?
我正在構建一個創建主題樹的擴散解決方案。如何刪除沒有訂閱者的主題?
我按需創建主題以反映從RabbitMQ Feed收到的值。每個主題都有一個內存開銷,所以我希望在一段時間內沒有訂閱者時刪除該主題。
這可以通過統一的Java API完成嗎?
TopicEventListener(TopicControl功能的一部分)提供了此功能。當話題有0個用戶時,以及當一個話題有至少1個用戶時,提供單獨的回叫。
例子:
public TopicEventListenerClient() {
session = Diffusion.sessions().principal("admin").password("password").open("ws://localhost:8080");
topicControl = session.feature(TopicControl.class);
topicControl.addTopicEventListener("rabbitMQ/foo", new TopicEventListener() {
@Override
public void onClose(String arg0) {
LOG.info("Listener closed");
}
@Override
public void onError(String arg0, ErrorReason arg1) {
LOG.info("Error on listener: " + arg1);
}
@Override
public void onRegistered(String arg0, Registration arg1) {
LOG.info("Listener registered");
}
@Override
public void onHasSubscribers(String arg0) {
LOG.info("Topic: " + arg0 + " has at least 1 subscriber");
}
@Override
public void onNoSubscribers(String arg0) {
LOG.info("Topic: " + arg0 + " has no subscribers");
}
});
}
希望這有助於!
非常感謝你這麼快速的迴應,解決了這個問題! –
從原始隊列或從樹中移除?此外,如果您已經嘗試寫出骨架代碼,請添加(通過使用[編輯])到您的問題。 –