rabbitmq-03 rabbitmq集成springboot

本文详细介绍了如何将RabbitMQ与SpringBoot进行集成,包括添加相关依赖、配置类设置、创建生产者和消费者,以及启动类和常量类的编写,并提供了测试环节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.添加依赖

<dependencies>
    <!-- springboot-web组件 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- 添加springboot对amqp的支持 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
    </dependency>
    <!--fastjson -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.49</version>
    </dependency>
</dependencies>

2.添加配置类

/**
 * 描述:交换机绑定队列
 * @author: myx
 * @date: 2019-05-01
 * Copyright © 2019-grape. All rights reserved.
 */
@Component
public class FanoutConfig {

	// 1.定义队列邮件
	@Bean
	public Queue fanOutEamilQueue() {
		return new Queue(FanoutConstrant.QUEUE_EMAIL_NAME);
	}

	@Bean
	public Queue fanOutSmsQueue() {
		return new Queue(FanoutConstrant.QUEUE_SMS_NAME);
	}

	// 2.定义交换机
	@Bean
	FanoutExchange fanoutExchange() {
		return new FanoutExchange(FanoutConstrant.EXCHANGE_NAME);
	}

	// 3.队列与交换机绑定邮件队列
	@Bean
	Binding bindingExchangeEamil(Queue fanOutEamilQueue, FanoutExchange fanoutExchange) {
		return BindingBuilder.bind(fanOutEamilQueue).to(fanoutExchange);
	}

	// 4.队列与交换机绑定短信队列
	@Bean
	Binding bindingExchangeSms(Queue fanOutSmsQueue, FanoutExchange fanoutExchange) {
		return BindingBuilder.bind(fanOutSmsQueue).to(fanoutExchange);
	}
}

3.生产者

/**
 * 描述:生产者
 * @author: myx
 * @date: 2019-05-01
 * Copyright © 2019-grape. All rights reserved.
 */
@Component
public class FanoutProducer {
	@Autowired
	private AmqpTemplate amqpTemplate;

	/**
	 * 发送消息
	 * @param queueName 队列名称
	 */
	public void send(String queueName) {
		String msg = "my_fanout_msg:" + new Date();
		System.out.println(msg + ":" + msg);
		amqpTemplate.convertAndSend(queueName, msg);
	}
}

4.邮件消费者

/**
 * 描述:邮件消费者
 * @author: myx
 * @date: 2019-05-01
 * Copyright © 2019-grape. All rights reserved.
 */
@Component
@RabbitListener(queues = FanoutConstrant.QUEUE_EMAIL_NAME)
public class FanoutEamilConsumer {
	@RabbitHandler
	public void process(String msg){
		System.out.println("邮件消费者获取生产者消息msg:" + msg);
		//如果处理过程中出现错误,默认为一直消费数据(可以通过application.yml配置修改重试次数)
		//int i=1/0;
	}
}

5.短信消费者

/**
 * 描述:短信消费者
 * @author: myx
 * @date: 2019-05-01
 * Copyright © 2019-grape. All rights reserved.
 */
@Component
@RabbitListener(queues = FanoutConstrant.QUEUE_SMS_NAME)
public class FanoutSmsConsumer {
	@RabbitHandler
	public void process(String msg) {
		System.out.println("短信消费者获取生产者消息msg:" + msg);
	}
}

6.启动类

/**
 * 描述:启动类
 * @author: myx
 * @date: 2019-05-01
 * Copyright © 2019-grape. All rights reserved.
 */
@RestController
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
    @Autowired
    private FanoutProducer fanoutProducer;

    @RequestMapping("/sendFanout")
    public String sendFanout(String queueName) {
        fanoutProducer.send(queueName);
        return "success";
    }
}

7.常量类

/**
 * 描述:常量
 * @author: myx
 * @date: 2019-05-01
 * Copyright © 2019-grape. All rights reserved.
 */
public class FanoutConstrant {
    /**
     * 队列名称
     */
    public static final String QUEUE_EMAIL_NAME = "fanout_queue_email";
    public static final String QUEUE_SMS_NAME = "fanout_queue_sms";
    /**
     * 交换机名称
     */
    public static final String EXCHANGE_NAME = "fanout";
}

8.测试

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值