parent
a429ddfc4c
commit
e60fd40ec3
@ -0,0 +1,56 @@
|
|||||||
|
package com.shun.coupon.config;
|
||||||
|
|
||||||
|
import org.springframework.amqp.core.*;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author 夜灬瞬
|
||||||
|
* @since 2023/6/21 21:08
|
||||||
|
*/
|
||||||
|
@Configuration
|
||||||
|
public class RabbitMQConfig {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 下单服务的交换机
|
||||||
|
*/
|
||||||
|
public static final String PLACE_ORDER_EXCHANGE = "place_order_exchange";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 三个服务的Queue
|
||||||
|
*/
|
||||||
|
public static final String COUPON_QUEUE = "coupon_queue";
|
||||||
|
public static final String USER_POINTS_QUEUE = "user_points_queue";
|
||||||
|
public static final String BUSINESS_QUEUE = "business_queue";
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public Exchange placeOrderExchange(){
|
||||||
|
return ExchangeBuilder.fanoutExchange(PLACE_ORDER_EXCHANGE).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public Queue couponQueue(){
|
||||||
|
return QueueBuilder.durable(COUPON_QUEUE).build();
|
||||||
|
}
|
||||||
|
@Bean
|
||||||
|
public Queue userPointsQueue(){
|
||||||
|
return QueueBuilder.durable(USER_POINTS_QUEUE).build();
|
||||||
|
}
|
||||||
|
@Bean
|
||||||
|
public Queue businessQueue(){
|
||||||
|
return QueueBuilder.durable(BUSINESS_QUEUE).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public Binding couponBinding(Exchange placeOrderExchange,Queue couponQueue){
|
||||||
|
return BindingBuilder.bind(couponQueue).to(placeOrderExchange).with("").noargs();
|
||||||
|
}
|
||||||
|
@Bean
|
||||||
|
public Binding userPointsBinding(Exchange placeOrderExchange,Queue userPointsQueue){
|
||||||
|
return BindingBuilder.bind(userPointsQueue).to(placeOrderExchange).with("").noargs();
|
||||||
|
}
|
||||||
|
@Bean
|
||||||
|
public Binding businessBinding(Exchange placeOrderExchange,Queue businessQueue){
|
||||||
|
return BindingBuilder.bind(businessQueue).to(placeOrderExchange).with("").noargs();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
package com.shun.coupon.listener;
|
||||||
|
|
||||||
|
import com.rabbitmq.client.AMQP;
|
||||||
|
import com.rabbitmq.client.Channel;
|
||||||
|
import com.shun.coupon.config.RabbitMQConfig;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.amqp.core.Message;
|
||||||
|
import org.springframework.amqp.rabbit.annotation.RabbitListener;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 优惠券消费者
|
||||||
|
*
|
||||||
|
* @author 夜灬瞬
|
||||||
|
* @since 2023/6/21 21:43
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
@Slf4j
|
||||||
|
public class CouponListener {
|
||||||
|
|
||||||
|
@RabbitListener(queues = {RabbitMQConfig.COUPON_QUEUE})
|
||||||
|
public void consume(String msg, Channel channel, Message message) throws Exception {
|
||||||
|
// 预扣除优惠券
|
||||||
|
Thread.sleep(400);
|
||||||
|
log.info("优惠券预扣除成功! msg:{}",msg);
|
||||||
|
// 手动ACK
|
||||||
|
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue