1.在pom.xml中引入依赖
<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>
2.在application.yml进行配置
# 服务端口
server:
port: 8080
# 配置rabbitmq服务
spring:
rabbitmq:
username: admin #rabbitmq的账号
password: admin #rabbitmq的密码
virtual-host: / #rabbitmq的挂载虚拟结点,相当于win中的分盘
host: 47.114.114.78 #远程的rabbitmq地址
port: 5672 #远程的rabbitmq的端口
3.Fanout
3.1Fanout路由、通道之间的绑定
package com.lsy.rabbitmq.config;
import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class FanoutConfig {
@Bean
public FanoutExchange fanoutExchange() {
return new FanoutExchange("fanout_exchange", true, false);
}
@Bean
public Queue emailFanoutQueue() {
return new Queue("email_queue", true);
}
@Bean
public Queue smsFanoutQueue() {
return new Queue("sms_queue", true);
}
@Bean
public Binding bindingFanoutSms() {
return BindingBuilder.bind(smsFanoutQueue()).to(fanoutExchange());
}
@Bean
public Binding bindingFanoutEmail() {
return BindingBuilder.bind(emailFanoutQueue()).to(fanoutExchange());
}
}
3.2Fanout生产者
package com.lsy.rabbitmq.serve.fanout;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class FanoutProducer {
@Autowired
private RabbitTemplate rabbitTemplate;
private String exchangeName = "fanout_exchange";
private String routeKey = "";
public void sendMsg(String msg) {
rabbitTemplate.convertAndSend(exchangeName, routeKey, msg);
}
}
3.3Fanout消费者
package com.lsy.rabbitmq.serve.fanout;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
@RabbitListener(queues = {
"email_queue"})
public class FanoutEmailConsumer {
@RabbitHandler
public void acceptMessage(String msg){
System.out.println("email接受到的信息为"+msg);
}
}
package com.lsy.rabbitmq.serve.fanout;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
@RabbitListener(queues = {
"sms_queue"})
public class FanoutSmsConsumer {
@RabbitHandler
public void acceptMessage(String msg){
System.out.println("sms接受到的信息为"+msg);
}
}
3.4测试
package com.lsy.rabbitmq;
import com.lsy.rabbitmq.serve.fanout.FanoutProducer;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class FanoutTest {
@Autowired
private FanoutProducer fanoutProducer;
@Test
public void sendMsg(){
fanoutProducer.sendMsg("HelloWorld");
}
}
3.5结果