我有一项更新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取消分配方法
@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);
}
感谢您的帮助。
答案 0 :(得分:0)
除非Image类中发生任何魔术,否则您需要在调用ImageRepository.save(Image.get())
之后再调用Image.get().setAssignedTo(null)
。假设ImageRepository
是org.springframework.data.repository.CRUDRepository
的实现。