第一件事引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
配置一下MQ
spring.rabbitmq.host=59.110.158.145
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.port=5672
#spring.rabbitmq.virtual-host=
5672端口不是控制台的端口,不是15672,是5672
这个类是用来接收消息的
com.imooc.order.message MqReceiver
spring boot项目中使用@Slf4j注解
https://www.cnblogs.com/sxdcgaq8080/p/11288213.html
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
这里用到了一个注解@RabbitListener,这里有很多的属性可以填,queues设置一个名字,只要把接收到的内容给打印
出来就好了
@RabbitListener(queues = "myQueue") //手动创建队列
public void process(String message){
log.info("MqReceiver:{}",message);
}
这是接收MQ消息,发送方我们就直接写到test里面就好了
@RunWith(SpringRunner.class)
@SpringBootTest
public class ServerApplicationTests {
@Test
public void contextLoads() {
}
}
@Component
public class MqReceiverTest extends ServerApplicationTests {
@Autowired
private AmqpTemplate amqpTemplate;
@Test
public void send() {
amqpTemplate.convertAndSend("myQueue","now"+new Date());
}
@Test
public void sendOrder() {
amqpTemplate.convertAndSend("myOrder","computer","now"+new Date());
}
}
发送MQ主要用到AmqpTemplate,
@Test
public void send() {
amqpTemplate.convertAndSend("myQueue","now"+new Date());
}
第一参数是队列的名字,第二个参数是要发送的内容,内容就把当前时间发送出去吧,这样接收端和发送端
都写好了,先要新建一个myQueue队列
59.110.158.145:15672
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.learn</groupId>
<artifactId>springboot-02-amqp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.12.RELEASE</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<thymeleaf.version>3.0.9.RELEASE</thymeleaf.version>
<thymeleaf-layout-dialect.version>2.2.2</thymeleaf-layout-dialect.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<!-- 这个插件,可以将应用打包成一个可执行的jar包 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
package com.learn.message;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import lombok.extern.slf4j.Slf4j;
/**
* 接收MQ消息
* @author Leon.Sun
*
*/
@Slf4j
@Component
public class MqReceiver {
private final Logger log = LoggerFactory.getLogger(MqReceiver.class);
// @RabbitListener(queues = "myQueue") //手动创建队列
//2.自动创建队列
// @RabbitListener(queuesToDeclare = @Queue("myQueue"))
//3.自动创建,Exchange和Queue绑定
@RabbitListener(bindings = @QueueBinding(
value = @Queue("myQueue"),
exchange = @Exchange("myExchange")
))
public void process(String message){
log.info("MqReceiver:{}",message);
}
/**
* 数码供应商服务
* */
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange("myOrder"),
key = "computer",
value = @Queue("computerOrder")
))
public void processComputer(String message){
log.info("computer MqReceiver:{}",message);
}
/**
* 水果供应商服务
* */
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange("myOrder"),
key = "fruit",
value = @Queue("fruitOrder")
))
public void processFruit(String message){
log.info("fruit MqReceiver:{}",message);
}
}
package com.learn.springboot;
import java.util.Date;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
/**
* 发送消息测试
* @author Leon.Sun
*
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class MqReceiverTest {
@Autowired
private AmqpTemplate amqpTemplate;
@Test
public void send() {
amqpTemplate.convertAndSend("myQueue","now"+new Date());
}
@Test
public void sendOrder() {
amqpTemplate.convertAndSend("myOrder","computer","now"+new Date());
}
}
spring.rabbitmq.host=59.110.158.145
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.port=5672
#spring.rabbitmq.virtual-host=
package com.learn;
import org.springframework.amqp.rabbit.annotation.EnableRabbit;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* 自动配置
* @author Leon.Sun
*
*/
@SpringBootApplication
@EnableRabbit
public class SpringBoot02AmqpApplication {
public static void main(String[] args) {
// Spring应用启动起来
SpringApplication.run(SpringBoot02AmqpApplication.class,args);
}
}