springboot整合rabbitMq(四)

前面几章内容已经介绍了rabbitMq安装和使用,这一节直接进入正题,进行springboot的整合吧!

1.pom文件添加maven配置

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

2.properties文件配置

里面做了详细的解释,哪些是整合springboot必须的配置我也做了标注!

#################rabbit mq###################
####springboot需要知道,我们的host,端口号,用户名,密码,vhost足以
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=test
spring.rabbitmq.password=test
spring.rabbitmq.virtualHost=springboot
##################下面的配置是程序中使用的变量配置,与springboot整合rabbit mq无关#########
#换句话说就是专门改到一个配置类里面进行管理,前面文章也说过怎么获取配置文件的值,这里就不做过多的说明了
#我们在进行rabiitmq初始讲解的时候,说过这样一句话: exchange是我们的一层封装,客户端(生产者)不能够直接接触到我们的queue,只能通过exchage进行消息的转发
#对于生产者而言,不需要知道我们的queue是什么,只需要知道我们的exchange的bingding-key的规则即可。
#消费者进行消息的消费,我们的消费者只需要知道 queue是谁就行了。
#总结:我们的生产者,需要知道exchange和bingding的规则;消费者只需要知道queue的名称即可
loader.rabbitMq.exchange=springboot.queue.exchange
loader.rabbitMq.routeKey=springboot.route
#消费者只需要知道queue的名称即可
loader.rabbitMq.queue=springboot.queue

3.老规矩配置类编写(这块有点类似redis)

package com.lengmo.config;

import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class RabbitConfig {
    @Bean
    public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) {
        RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);//处理连接问题
        rabbitTemplate.setMessageConverter(new Jackson2JsonMessageConverter());//处理序列化问题
        return rabbitTemplate;
    }
}

4.controller文件的编写

里面有消息的发送和接受,只是做个简单的demo,实际项目中的使用,大家还是按需进行吧!

package com.lengmo.controller;

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/rabbit")
public class RabbitController {

	@Autowired
	private RabbitTemplate rabbitTemplate;
	//这里几个参数的获取我们可以改为获取配置文件的方法,具体的方法在之前的文章中也有说明,这里只做演示,一切从简
	@Value("${loader.rabbitMq.exchange}")
	private String exchange ;
	@Value("${loader.rabbitMq.routeKey}")
	private String routingKey;
	@Value("${loader.rabbitMq.queue}")
	private String queue;
	
	@RequestMapping("/send")
	public String send(@RequestParam(name="msg")String msg) {
		//String string = "Hello World!";
//		rabbitTemplate.send(null); 
		//对于send方法,我们需要包装Message类: 1. 包装message body,需要进行字节数组转换 2. 确定message的各种
		//properties ,比如说消息级别(在特殊情况下,如果message的属性很多,我们通常建议使用我们的send方法。比如说:
		//需要通过对消息的级别进行消息的处理方法或者处理时间)。(send方法,不常用,1:不好组装;2 我们有自己的jdk实现的优先级队列)
		rabbitTemplate.convertAndSend(exchange, routingKey, msg);
		System.out.println("send success!");
		return msg+"=======send success!";
	}
	
	@RequestMapping("/get")
	public String get() {
//		Message res  =  rabbitTemplate.receive();
		// 与我们上方的send方法进行对比记忆学习。
		Object object = rabbitTemplate.receiveAndConvert(queue);
		String msg="get success!" + "content:" + String.valueOf(object);
		System.out.println(msg);
		return msg;
	}
}

5.整合完成后我们做个验证吧

5.1发送消息

http://localhost:8080/rabbit/send?msg=woshiceshi1

http://localhost:8080/rabbit/send?msg=woshiceshi2

http://localhost:8080/rabbit/send?msg=woshiceshi3

http://localhost:8080/rabbit/send?msg=woshiceshi4

发送过后我们看一下web端的管理平台有啥变化!

5.2获取一下消息

http://localhost:8080/rabbit/get    执行三次,我们看一下管理端的变化,消息有没有减少啊?怎么减少的呢(是否满足先进先出的原则呢?)?

5.3看一下后台,是否满足先进先出的原则

从下图我们可以清晰的看到入的规则是按照顺序进去的,然后出的顺序也是满足先进先出的原则

总结:至此我们对rabbitMq的简单操作已经完成,是不是还挺开心的呢?哈哈,学习使人进步,老规矩,感谢一下王军伟老师的精彩课程,让我获益良多啊!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值