У меня есть служба, которая обновляет ячейку в MySQL. Служба прекрасно работает при вызове с контроллера.
Но та же служба не может сохранить данные при вызове из MessageListener . Мой слушатель выглядит примерно так:
public class KeySpaceNotificationMessageListener implements MessageListener
{
@Autowired
ServiceImpl service;
@Override
public void onMessage(Message message, byte[] pattern)
{
if( (data = createPublishData(new String(message.getBody()), new String(message.getChannel()))) != null)
{
LOG.info("publishing data to deepstream channel with payload = {}", data);
}
private String createPublishData(String messageBody, String messageChannel)
{
//find id from message channel
service.unAssign(id);
return someString;
}
}
ServiceImpl Unassign метод
@Override
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
public ResponseEntity<String> unAssign(Long Id)
{
Optional<Image> Image = ImageRepository.findById(Id);
if(!Image.isPresent())
throw new ResourceNotFoundException("could not find image with id = " + Id);
Image.get().setAssignedTo(null);
return new ResponseEntity<String>("Unassign successfull", HttpStatus.OK);
}
Любая помощь приветствуется.