Helius
2020-05-25 09386afca773e3a6f99c5318d123b75ffeb7964e
init rabbitmq
3 files modified
5 files added
202 ■■■■■ changed files
pom.xml 11 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/configurations/RabbitMqConfig.java 63 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/configurations/properties/CustomRabbitProperties.java 19 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/rabbit/consumer/TestConsumer.java 21 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/rabbit/producer/TestProducer.java 42 ●●●●● patch | view | raw | blame | history
src/main/resources/application.yml 15 ●●●●● patch | view | raw | blame | history
src/test/java/com/xcong/excoin/RSATest.java 7 ●●●●● patch | view | raw | blame | history
src/test/java/com/xcong/excoin/RabbitMqTest.java 24 ●●●●● patch | view | raw | blame | history
pom.xml
@@ -27,6 +27,8 @@
        <mapstruct.version>1.3.1.Final</mapstruct.version>
        <hutool.version>5.3.1</hutool.version>
        <fastjson.version>1.2.61</fastjson.version>
        <netty.version>4.1.33.Final</netty.version>
        <dom4j.version>1.6.1</dom4j.version>
    </properties>
    <dependencies>
@@ -43,6 +45,11 @@
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>
<!--        <dependency>-->
@@ -166,14 +173,14 @@
        <dependency>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>1.6.1</version>
            <version>${dom4j.version}</version>
        </dependency>
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
            <version>4.1.33.Final</version>
            <version>${netty.version}</version>
        </dependency>
    </dependencies>
src/main/java/com/xcong/excoin/configurations/RabbitMqConfig.java
New file
@@ -0,0 +1,63 @@
package com.xcong.excoin.configurations;
import com.xcong.excoin.configurations.properties.CustomRabbitProperties;
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 javax.annotation.Resource;
/**
 * @author wzy
 * @date 2020-05-25
 **/
@Configuration
public class RabbitMqConfig {
    public static final String EXCHANGE_ONE = "excoin-exchange-one";
    public static final String QUEUE_TEST = "test-queue";
    public static final String ROUTING_KEY_TEST = "test-routingKey";
    @Resource
    private ConnectionFactory connectionFactory;
//    @Bean
//    public ConnectionFactory connectionFactory() {
//        CachingConnectionFactory connectionFactory = new CachingConnectionFactory(customRabbitProperties.getHost(), customRabbitProperties.getPort());
//        connectionFactory.setUsername(customRabbitProperties.getUsername());
//        connectionFactory.setPassword(customRabbitProperties.getPassword());
//        connectionFactory.setPublisherConfirmType(CachingConnectionFactory.ConfirmType.CORRELATED);
//        return connectionFactory;
//    }
    @Bean
    @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
    public RabbitTemplate rabbitTemplate() {
        return new RabbitTemplate(connectionFactory);
    }
    @Bean
    public DirectExchange defaultExchange() {
        return new DirectExchange(EXCHANGE_ONE);
    }
    @Bean
    public Queue testQueue() {
        return new Queue(QUEUE_TEST, true);
    }
    @Bean
    public Binding binding() {
        return BindingBuilder.bind(testQueue()).to(defaultExchange()).with(ROUTING_KEY_TEST);
    }
}
src/main/java/com/xcong/excoin/configurations/properties/CustomRabbitProperties.java
New file
@@ -0,0 +1,19 @@
package com.xcong.excoin.configurations.properties;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
/**
 * @author wzy
 * @date 2020-05-25
 **/
@Data
@Configuration
@ConfigurationProperties(prefix = "custom.rabbitmq")
public class CustomRabbitProperties {
    private String host;
    private int port;
    private String username;
    private String password;
}
src/main/java/com/xcong/excoin/rabbit/consumer/TestConsumer.java
New file
@@ -0,0 +1,21 @@
package com.xcong.excoin.rabbit.consumer;
import com.xcong.excoin.configurations.RabbitMqConfig;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
/**
 * @author wzy
 * @date 2020-05-25
 **/
@Slf4j
@Component
public class TestConsumer {
    @RabbitListener(queues = RabbitMqConfig.QUEUE_TEST)
    public void doSomething(String content) {
        log.info("#---->{}#", content);
    }
}
src/main/java/com/xcong/excoin/rabbit/producer/TestProducer.java
New file
@@ -0,0 +1,42 @@
package com.xcong.excoin.rabbit.producer;
import cn.hutool.core.util.IdUtil;
import com.xcong.excoin.configurations.RabbitMqConfig;
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;
/**
 * @author wzy
 * @date 2020-05-25
 **/
@Slf4j
@Component
public class TestProducer implements RabbitTemplate.ConfirmCallback {
    private RabbitTemplate rabbitTemplate;
    @Autowired
    public TestProducer(RabbitTemplate rabbitTemplate) {
        this.rabbitTemplate = rabbitTemplate;
        rabbitTemplate.setConfirmCallback(this);
    }
    public void sendTestMsg(String content) {
        CorrelationData correlationData = new CorrelationData(IdUtil.simpleUUID());
        rabbitTemplate.convertAndSend(RabbitMqConfig.EXCHANGE_ONE, RabbitMqConfig.ROUTING_KEY_TEST, content, correlationData);
    }
    @Override
    public void confirm(CorrelationData correlationData, boolean ack, String cause) {
        log.info("#----->{}#", correlationData);
        if (ack) {
            log.info("success");
        } else {
            log.info("--->{}", cause);
        }
    }
}
src/main/resources/application.yml
@@ -69,6 +69,21 @@
        min-idle: 8
    ## 连接超时时间(毫秒)
    timeout: 30000
  rabbitmq:
    host: 120.27.238.55
    port: 5672
    username: ct_rabbit
    password: 123456
    publisher-confirm-type: correlated
#custom:
#  rabbitmq:
#    host: 120.27.238.55
#    port: 5672
#    username: ct_rabbit
#    password: 123456
mybatis-plus:
  mapper-locations: classpath:mapper/**/*.xml
src/test/java/com/xcong/excoin/RSATest.java
@@ -13,6 +13,7 @@
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.math.BigDecimal;
import java.security.KeyPair;
/**
@@ -101,4 +102,10 @@
        String md5str = SecureUtil.md5("123456");
        log.info("{}", md5str);
    }
    @Test
    public void bigdecimalTest() {
        BigDecimal bigDecimal = new BigDecimal("123.12345678").setScale(4, BigDecimal.ROUND_DOWN);
        log.info("--->{}", bigDecimal);
    }
}
src/test/java/com/xcong/excoin/RabbitMqTest.java
New file
@@ -0,0 +1,24 @@
package com.xcong.excoin;
import com.xcong.excoin.rabbit.producer.TestProducer;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
/**
 * @author wzy
 * @date 2020-05-25
 **/
@SpringBootTest
public class RabbitMqTest {
    @Autowired
    private TestProducer testProducer;
    @Test
    public void sendTestMsg() {
        testProducer.sendTestMsg("this is test msg");
    }
}