RabbitMQ
一、synopsis
二、installation
1、windows
(1)install Erlang(otp_win64_20.2.exe)
(2)install RabbitMQ(rabbitmq-server-3.7.4.exe)
(3)start RabbitMQ Management(restart computer after first installed)
(2.1)RabbitMQ Service-start(by administrator)
(2.2)rabbitmq_server-3.7.4\sbin-->"rabbitmq-plugins enable rabbitmq_management"
(2.3)rabbitmq_server-3.7.4\sbin-->">rabbitmqctl start_app"
(3)UI
2、linux-->docker
(1)docker pull rabbitmq:management
(2)docker run -di --name tensquare_rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 15671:15671 -p 15672:15672 -p 25672:25672 rabbitmq:management
(3)firewall-cmd --zone=public --permanent --add-port=15672/tcp
(4)firewall-cmd --zone=public --permanent --add-port=15671/tcp
(5)firewall-cmd --zone=public --permanent --add-port=5672/tcp
(6)firewall-cmd --zone=public --permanent --add-port=5671/tcp
(7)firewall-cmd --zone=public --permanent --add-port=25672/tcp
(8)firewall-cmd --zone=public --permanent --add-port=4369/tcp
(9)firewall-cmd --reload
三、usage
1、environment
(1)create queue
(2)pom.xml
1 <dependency> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter-amqp</artifactId> 4 </dependency>
(3)application.yml
1 server: 2 port: 8099 3 spring: 4 rabbitmq: 5 host: 192.168.1.200
(4)RabbitApplication.java
1 @SpringBootApplication 2 public class RabbitApplication { 3 public static void main(String[] args) { 4 SpringApplication.run(RabbitApplication.class); 5 } 6 }
2、Direct Exchange
(1)Exchange:""
(2)ProductTest.java
1 @RunWith(SpringRunner.class)
2 @SpringBootTest(classes = RabbitApplication.class)
3 public class ProductTest {
4 @Autowired
5 private RabbitTemplate rabbitTemplate;
6
7 @Test
8 public void sendMsg(){
9 rabbitTemplate.convertAndSend("Predator","Predator is so handsome!-Direct Exchange");
10 }
11 }
(3)CustomerFirst.java
1 @Component 2 @RabbitListener(queues = "Predator") 3 public class CustomerFirst { 4 5 @RabbitHandler 6 public void getMsg(String msg){ 7 System.out.println("customer message--Direct Exchange: "+msg); 8 } 9 }
3、Fanout
(1)add queue
(2)add exchange
(3)binding
(4)ProductTest.java
1 @Test 2 public void sendMsg(){ 3 rabbitTemplate.convertAndSend("OceanSky","","Predator is so handsome!-Fanout Test"); 4 }
(5)customers
(5.1)CustomerFirst.java
1 @Component 2 @RabbitListener(queues = "Predator") 3 public class CustomerFirst { 4 5 @RabbitHandler 6 public void getMsg(String msg){ 7 System.out.println("Predator message--Direct Exchange: "+msg); 8 } 9 }
(5.2)CustomerSecond.java
1 @Component 2 @RabbitListener(queues = "darling") 3 public class CustomerSecond { 4 5 @RabbitHandler 6 public void getMsg(String msg){ 7 System.out.println("darling message--Fanout Test: "+msg); 8 } 9 }
(5.3)CustomerThird.java
1 @Component 2 @RabbitListener(queues = "ranran") 3 public class CustomerThird { 4 5 @RabbitHandler 6 public void getMsg(String msg){ 7 System.out.println("ranran message--Fanout Test: "+msg); 8 } 9 }
4、Topic
(1)environment
(2)ProductTest.java
1 @Test 2 public void sendMsg(){ 3 rabbitTemplate.convertAndSend("DotSDot","Predator.handsome","Predator is so handsome!-Topic Mode"); 4 rabbitTemplate.convertAndSend("DotSDot","xiaoli.darling","darling is so beautiful!-Topic Mode"); 5 rabbitTemplate.convertAndSend("DotSDot","ranran.darling","ranran is so cute!-Topic Mode"); 6 }