Add transaction listener to delay sending the event right time.
This commit is contained in:
@@ -19,12 +19,12 @@ public class PolicyHandler{
|
|||||||
|
|
||||||
if(배달시작됨.isMe() && 배달시작됨.getOrderId()!=null){
|
if(배달시작됨.isMe() && 배달시작됨.getOrderId()!=null){
|
||||||
|
|
||||||
try {
|
// try {
|
||||||
// 원래 데이터가 트랜잭션 커밋되기도 전에 이벤트가 너무 빨리 도달하는 경우를 막기 위함
|
// // 원래 데이터가 트랜잭션 커밋되기도 전에 이벤트가 너무 빨리 도달하는 경우를 막기 위함
|
||||||
Thread.currentThread().sleep(3000); // no good.
|
// Thread.currentThread().sleep(3000); // no good. --> pay 가 TX 를 마친 후에만 실행되도록 수정함
|
||||||
} catch (InterruptedException e) {
|
// } catch (InterruptedException e) {
|
||||||
e.printStackTrace();
|
// e.printStackTrace();
|
||||||
}
|
// }
|
||||||
|
|
||||||
System.out.println("배달시작됨 orderId = " + 배달시작됨.getOrderId());
|
System.out.println("배달시작됨 orderId = " + 배달시작됨.getOrderId());
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,9 @@ package fooddelivery;
|
|||||||
|
|
||||||
import javax.persistence.*;
|
import javax.persistence.*;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
|
import org.springframework.transaction.support.TransactionSynchronizationAdapter;
|
||||||
|
import org.springframework.transaction.support.TransactionSynchronizationManager;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
@@ -26,7 +29,15 @@ public class 결제이력 {
|
|||||||
}else{
|
}else{
|
||||||
결제승인됨 결제승인됨 = new 결제승인됨();
|
결제승인됨 결제승인됨 = new 결제승인됨();
|
||||||
BeanUtils.copyProperties(this, 결제승인됨);
|
BeanUtils.copyProperties(this, 결제승인됨);
|
||||||
|
|
||||||
|
//바로 이벤트를 보내버리면 주문정보가 커밋되기도 전에 배송발송됨 이벤트가 발송되어 주문테이블의 상태가 바뀌지 않을 수 있다.
|
||||||
|
// TX 리스너는 커밋이 완료된 후에 이벤트를 발생하도록 만들어준다.
|
||||||
|
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
|
||||||
|
@Override
|
||||||
|
public void beforeCommit(boolean readOnly) {
|
||||||
결제승인됨.publish();
|
결제승인됨.publish();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|||||||
Reference in New Issue
Block a user