springcloud - 비동기 재고 / 비동기 주문
2420 단어 springcloud
1: 재고 공제:
/**
*
* postman :http://localhost:8088/productInfo/koukucun
* body-raw :[{"productId":1,"productShuliang":2}]
*/
@PostMapping("/koukucun")
@Transactional(rollbackFor=Exception.class)
public void kouKuCun(@RequestBody List cartDtoList)
{
log.info(" :"+cartDtoList);
//
for (CartDto cartDto1:cartDtoList)
{
ProductInfo productInfo=iProductInfoService.selectById(cartDto1.getProductId());
//
if(null==productInfo)
{
//
throw new ProductException(ResultEnum.PRODUCT_NOT_EXIST);
}
Integer result= productInfo.getProductStock()-cartDto1.getProductShuliang();
//
if (result<0)
{
//
throw new ProductException(ResultEnum.KUCUN_NOT_EHIGHT);
}
//
productInfo.setProductId(cartDto1.getProductId());
productInfo.setProductStock(result);
//
Boolean is= iProductInfoService.updateById(productInfo);
if(is)
{
log.info(" ");
// mq
// json
String productJson = JSON.toJSONString(productInfo);
jmsMessagingTemplate.convertAndSend(queue,productJson);
log.info(" mq !");
}
else
{
log.info(" ");
}
}
}
2. 주문 시스템
package com.zhu.order.listener;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Component;
@Component
public class QueueListener {
@JmsListener(destination = "publish.queue2", containerFactory = "jmsListenerContainerQueue")
public String receive(String text){
System.out.println("QueueListener: consumer-a : " + text);
// json
// redis
return "consumer-a received : " + text;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Spring Cloud에서 Feign에 대한 일반적인 질문 요약1. FeignClient 인터페이스, @GettingMapping 같은 조합 메모는 사용할 수 없음 코드 예: 이쪽 @RequestMapping(value = "/simple/{id}", method = Reque...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.