springboot -- 消息队列初了解

大概预览:

1)、交换器:

在这里插入图片描述

2)、消息队列:

在这里插入图片描述

引入依赖:

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

配置文件:

//开启消息队列服务器的IP地址
spring.rabbitmq.host=192.168.93.136
//登录rabbitmq的默认账号
spring.rabbitmq.username=guest
//登录rabbitmq的默认密码
spring.rabbitmq.password=guest

1、不基于注解:

package com.example.demo;

import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.amqp.core.AmqpAdmin;
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Exchange;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import com.example.MyRabbitmqApplication;
import com.example.bean.Book;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = MyRabbitmqApplication.class)
public class MyRabbitmqApplicationTests {
	
	@Autowired
	RabbitTemplate rabbitTemplate; //负责发送和删除信息
	
	@Autowired
	AmqpAdmin amqpAdmin; //负责创建删除交换器和队列等等
	
	/*
	 * 发送消息队列信息
	 */
	@Test
	public void contextLoads() {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("msg", "你好");
		map.put("oooo", Arrays.asList("65565", "999999"));
		rabbitTemplate.convertAndSend("exchange.direct", "atguigu.news", new Book("水EEE", "罗贯中"));
	}
	
	/*
	 * 接收消息队列信息
	 */
	@Test
	public void receive(){
		//接收 atguigu.news 队列的信息
		Object o = rabbitTemplate.receiveAndConvert("atguigu.news"); 
		System.out.println(o.getClass());
		System.out.println(o);
	}
	
	@Test
	public void create(){
		//创建交换器
		amqpAdmin.declareExchange(new DirectExchange("admin.exchange")); 
		
		//创建消息队列
		amqpAdmin.declareQueue(new Queue("huang.queue")); 
		
		//创建交换器和消息队列的绑定条件
		amqpAdmin.declareBinding(new Binding("huang.queue", Binding.DestinationType.QUEUE, "admin.exchange", "huang", null));
	}

}

2、注解:

1) 主程序加上 @EnableRabbit 开启消息队列功能

package com.example;

import org.springframework.amqp.rabbit.annotation.EnableRabbit;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@EnableRabbit
@SpringBootApplication
public class MyRabbitmqApplication {

	public static void main(String[] args) {
		SpringApplication.run(MyRabbitmqApplication.class, args);
	}

}

2) 创建消息队列监听器类

package com.example.config;

import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Service;

import com.example.bean.Book;

@Service
public class RabbitMQListener {
	
	//接收 atguigu.news 队列的信息, 
	@RabbitListener(queues="atguigu.news")
	public void receive2(Message message){
		System.out.println(message.getBody());
		System.out.println(message.getMessageProperties());
	}
}

发布了52 篇原创文章 · 获赞 1 · 访问量 1758

猜你喜欢

转载自blog.csdn.net/qq_42039738/article/details/104098459