Springboot整合RabbitMQ消息中间件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_41349389/article/details/84322994

简单了解RabbitMQ安装

项目中使用rabbitMQ必须得安装,rabbitmq环境这是前提,下面简单介绍一下使用Docker安装rabbitMQ;
1、docker search rabbitmq:management
2、docker pull rabbitmq:management
注意:如果docker pull rabbitmq 后面不带management,启动rabbitmq后是无法打开管理界面的,所以我们要下载带management插件的rabbitmq.
3、开始创建rabbitmq容器
docker run -d --name rabbitmq --publish 5671:5671 \ --publish 5672:5672 --publish 4369:4369 --publish 25672:25672 --publish 15671:15671 --publish 15672:15672 \rabbitmq:management
4、容器启动之后就可以访问web 管理端了 http://安装环境下的本机IP:15672,默认创建了一个 guest 用户,密码也是 guest。

1.pom文件添加amqp依赖

<dependencies>
		<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>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

2.在主配置文件application.properties中添加相关配置

spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

3.springboot启动类

在启动类上添加@EnableRabbit //开启基于注解的RabbitMQ模式

4.信息发送

/**
 * 1、单播(点对点)
 */
@Autowired
RabbitTemplate rabbitTemplate;//引入springboot提供的rabbit操作模板

@Test
public void contextLoads() {
	//Message需要自己构造一个;定义消息体内容和消息头
	//rabbitTemplate.send(exchage,routeKey,message);

	//object默认当成消息体,只需要传入要发送的对象,自动序列化发送给rabbitmq;
	//rabbitTemplate.convertAndSend(exchage,routeKey,object);
	Map<String,Object> map = new HashMap<>();
	map.put("msg","这是第一个消息");
	map.put("data", Arrays.asList("helloworld",123,true));
	//对象被默认序列化以后发送出去
	rabbitTemplate.convertAndSend("exchange.direct","demo.news",new Book("西游记","吴承恩"));

}

4.接收消息

/**
 * 点对点
 */
@Test
public void receive(){
	Object o = rabbitTemplate.receiveAndConvert("demo.news");
	System.out.println(o.getClass());
	System.out.println(o);
}
/**
 * 广播
 */
@Test
public void sendMsg(){
	rabbitTemplate.convertAndSend("exchange.fanout","",new Book("红楼梦","曹雪芹"));
}

默认发送到队列中的对象为系列化的信息;接受数据,如何将数据自动的转为json发送出去
创建该配置类

@Configuration   //用于将接收的数据转为json格式
public class MyAMQPConfig {
    @Bean
    public MessageConverter messageConverter(){
        return new Jackson2JsonMessageConverter();
    }
}

在上面我们了解了消息的发送和接收,接下来我们来看如何在业务中监听某个队列

import com.demo.amqp.bean.Book;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Service;
@Service
public class BookService {
    @RabbitListener(queues = "demo.news")
    public void receive(Book book){
        System.out.println("收到消息:"+book);
    }
    
    @RabbitListener(queues = "demo")
    public void receive02(Message message){
        System.out.println(message.getBody());
        System.out.println(message.getMessageProperties());
    }
}

总结:

通过springboot使用rabbitmq是非常简单的;容易上手,但是前提一定要了解Queue,Exchange,Binding,路由键。等这些概念才能更容易理解和学习,这里就不多说了 https://blog.csdn.net/weixin_41349389/article/details/84302551。

  • 1、 RabbitTemplate :给RabbitMQ发送和接受消息;
  • 2、 AmqpAdmin : RabbitMQ系统管理功能组件;
    AmqpAdmin:创建和删除 Queue,Exchange,Binding
  • 3、@EnableRabbit + @RabbitListener 监听消息队列的内容

猜你喜欢

转载自blog.csdn.net/weixin_41349389/article/details/84322994