在hashmap中存储消费者的最后订阅

时间:2016-08-10 09:33:19

标签: java hashmap rx-java

我有Rx Stream,我使用分组的observable根据判别值有多个observable。问题是我想在内存中保留每个组可观察的最后一个订阅,以便在创建新流时删除流(取消订阅)

我正在使用一个简单的Hashmap来根据一个可以自我观察的键来存储值,但它不值得。

这是我到目前为止的地方:

stream
.groupBy(ts -> ts.getLogin())
        .map(receptor -> receptor.asObservable())
        .forEach(consumer -> {
            controlConsumer(consumer);
        });

public void controlConsumer(Observable<Number> pConsumer) {

Subscription mySubscription = pConsumer
 .buffer(2,1)
 .subscribe();

    // Remove the current consumer last subscription if existing

    if(consumersLastSubcriptions.containsKey(pConsumer)) {
        LOG.info("removing last subscription");
        Subscription lLastSubscription = consumersLastSubcriptions.get(pConsumer);
        lLastSubscription.unsubscribe();
    }

    // store the new consumer subscription
    consumersLastSubcriptions.put(pConsumer, lSubscription);
}

更新

实际上,我可能会有发出它们的用户登录定义的不同项目。我想要的是存储每个用户的最后一个订阅,以便在需要时重新创建一个新用户时将其删除。我的目的是关闭不再使用的每个流,不要让它们一无所获。

0 个答案:

没有答案