JAVA操控RabbitMQ

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结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44954571/article/details/125384247