优惠券模块消费消息

main
夜灬瞬 2 years ago
parent a429ddfc4c
commit e60fd40ec3

@ -18,4 +18,11 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
</dependencies>
</project>

@ -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);
}
}

@ -6,4 +6,14 @@ spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
server-addr: 127.0.0.1:8848
rabbitmq:
host: 192.168.48.128
port: 5672
username: admin
password: admin
virtual-host: /
listener:
simple:
# 手动 ack
acknowledge-mode: manual
Loading…
Cancel
Save