springboot+rabbitmq集成

关于rabbitmq相关的名词定义可查看 https://mp.weixin.qq.com/s/OABseRR0BnbK9svIPyLKXw
linux:搭建rabbitmq 地址:https://blog.csdn.net/qq_29312259/article/details/83347442
开始搭建:
pom.xml:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>

application.yml配置文件

spring:
  rabbitmq:
    host: 172.16.32.241
    port: 5672
    username: admin
    password: 123456
    virtualHost: /msg #需给admin virtualHost 为/msg的权限

在这里插入图片描述
介绍Exchange Typ:
RabbitMQ常用的Exchange Type有fanout、direct、topic、headers这四种
fanout:广播,即只要绑定了此交换机,都会接到消息
direct:它会把消息路由到那些Binding key与Routing key完全匹配的Queue中
topic:模糊匹配,与direct相似,只是Routing Key是由点(.)分隔的,可模糊匹配*或#,*用于匹配一个单词,"#"用于匹配多个单词(可以是零个)

模拟实际项目的中的发邮件功能:
direct模式为例:
config类:

@Configuration
public class RabbitmqConfig {

    @Bean
    public Queue Queue() {
	    //	设置管道,名称为:email_queue
        return  new Queue("email_queue");
    }
}

service层,即生产者端:

@Service
public class RabbitmqServiceImpl implements RabbitmqService {

    @Autowired
    private AmqpTemplate rabbitTemplate;

    @Override
    public String sendEmail(String msg) {
        for (int i=0;i<5;i++) {
        	//Routing Key为email_queue
            rabbitTemplate.convertAndSend("email_queue",msg + i);
        }
        return "success";
    }
}

消费者端:(正常分布式项目中的消费者会是一个单独的项目,为了测试,创建在一个项目中即可)

@Component
@RabbitListener(queues = "email_queue")
public class RabbitMqCustomer {

    @RabbitHandler
    public void process(String msg) {
        System.out.println("Receiver1  : " + msg);
        //调用实际发邮件方法
    }
}

测试:浏览器输入http://localhost:8080/sendEmail?msg=你好
控制台:

Receiver1  : 你好0
Receiver1  : 你好1
Receiver1  : 你好2
Receiver1  : 你好3
Receiver1  : 你好4

猜你喜欢

转载自blog.csdn.net/qq_29312259/article/details/83474965