环境准备
- 下载安装包(elang环境和rubit):
https://pan.baidu.com/s/17h02QPVPF89l_9Q1AxuNEg 提取码:frwg
安装步骤:
1. 安装elang 环境, 直接next:
- 配置环境变量
- 打开dos窗口(CMD), 输入erl ,看安装成功没
2. 安装rubitmq
- 运行安装软件, 直接next
- 在安装目录, 进入sbin目录,双击rabbitmq-service.bat 启动
- 打开http://localhost:15672 , 账户和密码: guest进入
3. 创建项目验证
项目树目录
- maven 依赖包
<!--rabbitmq--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> <version>2.5.3</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <version>2.5.2</version> </dependency>
- 创建测试类
-
application.yml
spring: rabbitmq: username: guest password: guest port: 5672 host: localhost
-
RabbitConfig.java 配置类
package configs; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Value; 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; @Configuration public class RabbitConfig { @Value("${spring.rabbitmq.host}") private String host; @Value("${spring.rabbitmq.port}") private int port; @Value("${spring.rabbitmq.username}") private String username; @Value("${spring.rabbitmq.password}") private String password; public static final String EXCHANGE_A = "my-mq-exchange_A"; public static final String EXCHANGE_B = "my-mq-exchange_B"; public static final String EXCHANGE_C = "my-mq-exchange_C"; public static final String QUEUE_A = "QUEUE_A"; public static final String QUEUE_B = "QUEUE_B"; public static final String QUEUE_C = "QUEUE_C"; public static final String ROUTINGKEY_A = "spring-boot-routingKey_A"; public static final String ROUTINGKEY_B = "spring-boot-routingKey_B"; public static final String ROUTINGKEY_C = "spring-boot-routingKey_C"; @Bean public ConnectionFactory connectionFactory() { CachingConnectionFactory connectionFactory = new CachingConnectionFactory(host,port); connectionFactory.setUsername(username); connectionFactory.setPassword(password); connectionFactory.setVirtualHost("/"); connectionFactory.setPublisherConfirms(true); return connectionFactory; } @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) //必须是prototype类型 public RabbitTemplate rabbitTemplate() { RabbitTemplate template = new RabbitTemplate(connectionFactory()); return template; } }
-
测试类
import configs.TestConfigation; import org.junit.jupiter.api.Test; import org.springframework.amqp.rabbit.annotation.EnableRabbit; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.TestConfiguration; @SpringBootTest(classes = TestConfigation.class) public class MQTest { //======================= @Autowired RabbitTemplate rabbitTemplate; //单播发送 @Test public void rabbitMQTest() { rabbitTemplate.convertAndSend("test", "test", "test"); } //单播接收 @Test public void rabbitMQTestReceive() { String person = (String) rabbitTemplate.receiveAndConvert("test_queue"); System.out.println(person); } //广播 @Test public void sendMsg() { rabbitTemplate.convertAndSend("exchange.fanout", "占位", "test"); } //广播接收 @Test public void receiveMsg() { System.out.println(rabbitTemplate.receiveAndConvert("hq.username")); } //===================== }
-
启动配置项 TestConfigation.class
package configs; import org.springframework.amqp.rabbit.annotation.EnableRabbit; import org.springframework.context.annotation.ComponentScan; @EnableRabbit @ComponentScan(basePackageClasses = TestConfigation.class) public class TestConfigation { }
-
rubitmq 建立exchange(test) 和监听 quene(test_quene)
- test
- quene_test
- 将exchange 绑定 quene
-
运行测试类,自己测试
-