2、库存服务在监听到消息队列OrderCreated中的消息,将库存表中商品的库存减去下单数量,然后再发送一个Stock Locked事件给消息队列。
代码:
- /**
- * 接收下单消息
- * @param message 接收到的消息
- * @param session 上下文
- */
- @JmsListener(destination = ORDER_CREATE,containerFactory = "myListenerContainerFactory")
- @Transactional(rollbackFor = Exception.class)
- public void receiveOrderCreatedMsg(Message message, Session session){
- try {
- if (message instanceof ActiveMQObjectMessage){
- MqStockMsg result = new MqStockMsg();
- ActiveMQObjectMessage objectMessage=(ActiveMQObjectMessage)message;
- MqOrderMsg msg = (MqOrderMsg)objectMessage.getObject();
- Integer updateCount = stockMapper.updateNumByStockId(msg.getStockId(),msg.getGoodCount());
- if (updateCount >= 1){
- result.setSuccess(true);
- result.setOrderId(msg.getId());
- }else {
- result.setSuccess(false);
- }
- // 手动ack,使消息出队列,不然会不断消费
- message.acknowledge();
- // 发送库存锁定消息到MQ
- jmsProducer.sendStockLockedMsg(result);
- }
- } catch (JMSException e) {
- log.error("接收订单创建消息报错:"+e.getMessage());
- }
- }
(编辑:西安站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|