大概预览:
1)、交换器:
2)、消息队列:
引入依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
配置文件:
spring.rabbitmq.host=192.168.93.136
spring.rabbitmq.username=guest
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(){
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 {
@RabbitListener(queues="atguigu.news")
public void receive2(Message message){
System.out.println(message.getBody());
System.out.println(message.getMessageProperties());
}
}