У меня есть класс компонента Spring, помеченный @Component
, и в нем у меня есть поле ConcurrentHashMap map, которое является init в конструкторе компонента и используется в слушателе потокового источника:
@Component
public class FooService {
private ConcurrentHashMap<Long, String> fooMap;
public FooService () {
fooMap = new ConcurrentHashMap<>();
}
@StreamListener(value = Sink.INPUT)
private void handler(Foo foo) {
fooMap.put(foo.id, foo.body);
}
}
Слушатель обрабатывает сообщения, отправленныеконтроллер покоя.Можете ли вы сказать мне, почему я всегда получаю fooMap.put(...)
NullPointerException, потому что fooMap имеет значение null и не инициализирован.
РЕДАКТИРОВАТЬ:
После ответа @OlegZhurakousky я обнаружил, что проблема заключается вс асинхронным методом.Когда я добавляю @Async для какого-либо метода и добавляю @EnableAsync, я больше не могу использовать приватный модификатор для моего метода @StreamListener.У вас есть идея, почему и как это исправить?https://github.com/schwantner92/spring-cloud-stream-issue Спасибо.