Ограничение памяти шины событий Guava

Я реализовал синглтон EventBus с одним подписчиком. В моем приложении много производителей (любой запрос может быть производителем).

@Bean
public EventBus eventBus() {
    EventBus eventBus = new EventBus();
    eventBus.register(new MyEventHandler());
    return eventBus;
}

Я не мог найти, как установить ограничение на количество событий для EventBus (как установить ограничение памяти для EventBus), а также что произойдет, если количество производимых событий больше, чем EventBus емкости.

Я хотел бы, чтобы EventBus выдавало исключение для регистрации сбоя.


person Pooya    schedule 13.08.2015    source источник


Ответы (1)


Нет необходимости устанавливать лимит памяти. Это безопасно, потому что EventBus работает без сохранения состояния.

В одном потоке EventBus очищает очередь событий каждый раз после завершения EventBus.post(), поэтому в одном потоке это безопасно.

В многопоточности EventBus использует независимую очередь событий для каждого потока.

person 卢声远 Shengyuan Lu    schedule 14.08.2015
comment
Таким образом, в основном предел очереди - это предел памяти сервера? он пытается заполнить очередь до тех пор, пока не останется памяти? А под многопоточным EventBus ты говоришь про AsyncEventBus? - person Pooya; 14.08.2015