Данные не сохраняются в mysql при вызове из MessageListener в Springboot - PullRequest
0 голосов
/ 07 марта 2019

У меня есть служба, которая обновляет ячейку в 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);
    }

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 07 марта 2019

Если в вашем классе Image не происходит никакого волшебства, вам нужно позвонить ImageRepository.save(Image.get()) после вызова Image.get().setAssignedTo(null). Это предполагает, что ImageRepository является реализацией org.springframework.data.repository.CRUDRepository.

...