前提:安装好RabbitMQ,配置Exchanges---Queues
引入依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
实体类Person:( 无参构造器不能少 )否则报错--jackson的反序列化需要无参构造函数
package com.vortex.rabbitmqtest.bean;
public class Person {
private String name;
private String age;
private String address;
public Person() {
}
public Person(String name, String age, String address) {
this.name = name;
this.age = age;
this.address = address;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "person{" +
"name='" + name + '\'' +
", age='" + age + '\'' +
", address='" + address + '\'' +
'}';
}
}
RabbitMQ配置类:(发送的消息 json 序列化)
package com.vortex.rabbitmqtest.config;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyAMQPConfig {
@Bean
public MessageConverter messageConverter(){
return new Jackson2JsonMessageConverter();
}
}
application.properties 配置文件:
spring.rabbitmq.host=192.168.25.146
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
测试类:(单点发送)
package com.vortex.rabbitmqtest;
import com.vortex.rabbitmqtest.bean.person;
import org.junit.Test;
import org.junit.runner.RunWith;
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 sun.font.TrueTypeFont;
@RunWith(SpringRunner.class)
@SpringBootTest
public class RabbitmqtestApplicationTests {
@Autowired
RabbitTemplate rabbitTemplate;
@Test
public void test01(){
//交换器-exchange.direct 发送对象到 vortex
rabbitTemplate.convertAndSend("exchange.direct","vortex",new Person("typ","20","beijing"));
}
}
这是发送后的截图:(队列中有一个消息)
现在来接收数据:
@Test
public void test02(){
//接收
Person o = (Person) rabbitTemplate.receiveAndConvert("vortex");
System.out.println(o.getClass());
System.out.println(o);
}
队列中的消息被消费
fanout--订阅模式
@Test
public void test03(){
rabbitTemplate.convertAndSend("exchange.fanout","",new Person("lpl","8","beijing"));
}