백그라운드 구조는 SpringMVC, Spring, jpa(HibernateJpaDialect),
DataSource(c3p0), Mysql(InnoBDB),
transactionManager(JpaTransactionManager)입니다.
프런트 엔드는 addScenicSpot() 메서드를 호출하여 정보를 데이터베이스에 저장한 다음 저장된 데이터 컨트롤의 ID를 메시지 대기열로 보냅니다. 그런 다음 구독자는 대기열의 정보를 처리하고 방금 저장된 정보를 기반으로 쿼리합니다. 그런 다음 외부 인터페이스를 호출하여 경도와 위도를 쿼리하고 얻은 경도와 위도를 데이터베이스에 저장합니다.
지금 문제는 정보 저장은 정상인데, 구독자 처리 시 획득한 ID를 기준으로 저장된 정보를 찾을 수 없다는 점입니다.
버그의 원인은 스프링 트랜잭션 제출이 메시지 대기열의 생성 메시지보다 늦어서 메시지 대기열이 메시지를 소비할 때 잘못된 데이터를 얻게 되었기 때문입니다.
영감은 여기에서 얻습니다: http://www.cnblogs. com/taocon...