目录
2. 在 application.yml 中配置rabbitmq的 连接信息:
1.先加入maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
2. 在 application.yml 中配置rabbitmq的 连接信息:
spring:
rabbitmq:
host: 127.0.0.1
port: 5672
username: guest
password: guest
listener:
simple:
acknowledge-mode: manual
prefetch: 1
3.创建生产者
@Component
public class Sender {
@Autowired
private AmqpTemplate amqpTemplate;
public void sendHelloQueue(String msg){
//参数:1-交换机 2-路由键(发布订阅模式不需要)3-发送的信息
this.amqpTemplate.convertAndSend("hello.exchange","",msg);
}
}
4.创建两个消费者
第一个
@Slf4j
@Component
@RabbitListener(bindings = @QueueBinding(
//指定绑定的队列(该队列将自动创建),autoDelete="true"意味着程序关闭时该队列自动删除
value = @Queue(value = "hello.queue-1",autoDelete = "true"),
//指定交换机,交换机类型:FANOUT 广播模式
exchange = @Exchange(value = "hello.exchange",type = ExchangeTypes.FANOUT)
))
public class PsReceiver1 {
@SneakyThrows
@RabbitHandler
public void process(String msg, Channel channel, Message message){
log.info("PSReceiver1 = {}",msg);
channel.basicAck(message.getMessageProperties().getDeliveryTag(),false);
}
}
第二个
@Slf4j
@Component
@RabbitListener(bindings = @QueueBinding(
//指定绑定的队列(该队列将自动创建),autoDelete="true"意味着程序关闭时该队列自动删除
value = @Queue(value = "hello.queue-2",autoDelete = "true"),
//指定交换机,交换机类型:FANOUT 广播模式
exchange = @Exchange(value = "hello.exchange",type = ExchangeTypes.FANOUT)
))
public class PsReceiver2 {
@SneakyThrows
@RabbitHandler
public void process(String msg, Channel channel, Message message){
log.info("PSReceiver2 = {}",msg);
channel.basicAck(message.getMessageProperties().getDeliveryTag(),false);
}
}
5.测试类中测试
@SpringBootTest
class Rabbitmt1ApplicationTests {
@Autowired
private Sender sender;
@Test
void sendHelloQueue() throws Exception{
for (int i=0; i<5; i++){
sender.sendHelloQueue("hello-"+i);
}
}
}