Helius
2021-09-25 d74032da9b0a6a893a8a03e3fa64d2f0ae2a9f2b
add rabbitmq
8 files added
5 files modified
256 ■■■■■ changed files
pom.xml 17 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java 50 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/entity/AgentInfo.java 44 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/rabbit/constants/ExchangeConstants.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/rabbit/constants/RouteKeyConstants.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java 22 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java 47 ●●●●● patch | view | raw | blame | history
src/main/resources/application-dev.yml 6 ●●●●● patch | view | raw | blame | history
src/main/resources/application-prod.yml 6 ●●●●● patch | view | raw | blame | history
src/main/resources/application-test.yml 6 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/modules/MallMoneyFlowMapper.xml 4 ●●●● patch | view | raw | blame | history
src/test/java/cc/mrbird/febs/AgentTest.java 24 ●●●●● patch | view | raw | blame | history
pom.xml
@@ -267,6 +267,23 @@
            <artifactId>mapstruct</artifactId>
            <version>${mapstruct.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
    <build>
src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java
New file
@@ -0,0 +1,50 @@
package cc.mrbird.febs.common.configure;
import cc.mrbird.febs.rabbit.constants.ExchangeConstants;
import cc.mrbird.febs.rabbit.constants.QueueConstants;
import cc.mrbird.febs.rabbit.constants.RouteKeyConstants;
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
 * @author wzy
 * @date 2021-09-25
 **/
@Configuration
public class RabbitConfigure {
    @Resource
    private ConnectionFactory connectionFactory;
    @Bean
    @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
    public RabbitTemplate rabbitTemplate() {
        return new RabbitTemplate(connectionFactory);
    }
    @Bean
    public DirectExchange defaultExchange() {
        return new DirectExchange(ExchangeConstants.EXCHANGE_DEFAULT);
    }
    @Bean
    public Queue defaultQueue() {
        return new Queue(QueueConstants.QUEUE_DEFAULT);
    }
    @Bean
    public Binding defaultBind() {
        return BindingBuilder.bind(defaultQueue()).to(defaultExchange()).with(RouteKeyConstants.ROUTE_KEY_DEFAULT);
    }
}
src/main/java/cc/mrbird/febs/mall/entity/AgentInfo.java
New file
@@ -0,0 +1,44 @@
package cc.mrbird.febs.mall.entity;
import lombok.Data;
import java.math.BigDecimal;
/**
 * @author wzy
 * @date 2021-09-25
 **/
@Data
public class AgentInfo {
    /**
     * 下单数量要求 1-直推 2-团队
     */
    private Integer orderType;
    /**
     * 下单数量
     */
    private Integer orderCnt;
    /**
     * 需要上一级的数量
     */
    private Integer lastCnt;
    /**
     * 直推收益
     */
    private BigDecimal directIncome;
    /**
     * 团队收益
     */
    private BigDecimal TeamIncome;
    /**
     * 团队收益 1-指定金额 2-比例
     */
    private BigDecimal teamIncomeType;
}
src/main/java/cc/mrbird/febs/rabbit/constants/ExchangeConstants.java
New file
@@ -0,0 +1,10 @@
package cc.mrbird.febs.rabbit.constants;
/**
 * @author wzy
 * @date 2021-09-25
 **/
public class ExchangeConstants {
    public static final String EXCHANGE_DEFAULT = "exchange_default";
}
src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java
New file
@@ -0,0 +1,10 @@
package cc.mrbird.febs.rabbit.constants;
/**
 * @author wzy
 * @date 2021-09-25
 **/
public class QueueConstants {
    public static final String QUEUE_DEFAULT = "queue_default";
}
src/main/java/cc/mrbird/febs/rabbit/constants/RouteKeyConstants.java
New file
@@ -0,0 +1,10 @@
package cc.mrbird.febs.rabbit.constants;
/**
 * @author wzy
 * @date 2021-09-25
 **/
public class RouteKeyConstants {
    public static final String ROUTE_KEY_DEFAULT = "route_key_default";
}
src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
New file
@@ -0,0 +1,22 @@
package cc.mrbird.febs.rabbit.consumer;
import cc.mrbird.febs.rabbit.constants.QueueConstants;
import com.rabbitmq.client.Channel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
/**
 * @author wzy
 * @date 2021-09-25
 **/
@Slf4j
@Component
public class AgentConsumer {
    @RabbitListener(queues = QueueConstants.QUEUE_DEFAULT)
    public void agentReturn(Message message, Channel channel) {
        log.info("消费者:{}", new String(message.getBody()));
    }
}
src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java
New file
@@ -0,0 +1,47 @@
package cc.mrbird.febs.rabbit.producter;
import cc.mrbird.febs.rabbit.constants.ExchangeConstants;
import cc.mrbird.febs.rabbit.constants.RouteKeyConstants;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.connection.CorrelationData;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.UUID;
/**
 * @author wzy
 * @date 2021-09-25
 **/
@Slf4j
@Component
public class AgentProducer implements RabbitTemplate.ConfirmCallback {
    /**
     * 配置中配置的RabbitTemplate的是prototype类型,不能直接注入
     */
    private RabbitTemplate rabbitTemplate;
    /**
     * 在构造方法上注入RabbitTemplate
     *
     * @param
     */
    @Autowired
    public AgentProducer(RabbitTemplate rabbitTemplate) {
        this.rabbitTemplate = rabbitTemplate;
        rabbitTemplate.setConfirmCallback(this);
    }
    @Override
    public void confirm(CorrelationData correlationData, boolean ack, String cause) {
    }
    public void sendOrderReturn(Long id) {
        log.info("发送消息:{}", id);
        CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());
        rabbitTemplate.convertAndSend(ExchangeConstants.EXCHANGE_DEFAULT, RouteKeyConstants.ROUTE_KEY_DEFAULT, id, correlationData);
    }
}
src/main/resources/application-dev.yml
@@ -41,3 +41,9 @@
        max-wait: 10000
    # 连接超时时间(毫秒)
    timeout: 5000
  rabbitmq:
    host: 120.27.238.55
    port: 5672
    username: ct_rabbit
    password: 123456
    publisher-confirm-type: correlated
src/main/resources/application-prod.yml
@@ -47,3 +47,9 @@
        max-wait: 10000
    # 连接超时时间(毫秒)
    timeout: 5000
  rabbitmq:
    host: 120.27.238.55
    port: 5672
    username: ct_rabbit
    password: 123456
    publisher-confirm-type: correlated
src/main/resources/application-test.yml
@@ -41,3 +41,9 @@
        max-wait: 10000
    # 连接超时时间(毫秒)
    timeout: 5000
  rabbitmq:
    host: 120.27.238.55
    port: 5672
    username: ct_rabbit
    password: 123456
    publisher-confirm-type: correlated
src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
@@ -14,10 +14,10 @@
        from mall_money_flow a
            inner join mall_member b on a.member_id=b.id
        <where>
            <if test="record.type == 2">
            <if test="record.type == 3">
                and a.amount > 0
            </if>
            <if test="record.type == 3">
            <if test="record.type == 2">
                and 0 > a.amount
            </if>
            <if test="record.memberId != null">
src/test/java/cc/mrbird/febs/AgentTest.java
New file
@@ -0,0 +1,24 @@
package cc.mrbird.febs;
import cc.mrbird.febs.rabbit.producter.AgentProducer;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
/**
 * @author wzy
 * @date 2021-09-25
 **/
@Slf4j
@SpringBootTest
public class AgentTest {
    @Autowired
    private AgentProducer agentProducer;
    @Test
    public void agentTest() {
        agentProducer.sendOrderReturn(1L);
    }
}