一、导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>
二、编写配置文件
spring.application.name=rabbitmq-test
spring.rabbitmq.host=192.168.10.211
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.virtual-host=/test
三、15672管理界面创建队列
四、15672管理界面创建交换机
五、15672管理界面队列绑定交换机及路由
六、编写消费者
@Component
public class Consumer {
@RabbitListener(queues = {"test01"})
public void consumer01(@Payload String msg, @Headers Map<String,Object> headers){
System.out.println(msg);
headers.entrySet().stream().forEach(e -> System.out.println(e.getKey() + " " + e.getValue()));
}
@RabbitListener(queues = {"test02"})
public void consumer02(@Payload String msg, @Headers Map<String,Object> headers){
System.out.println(msg);
headers.entrySet().stream().forEach(e -> System.out.println(e.getKey() + " " + e.getValue()));
}
}
七、15672管理界面发送消息
八、单元测试发送消息
(1)测试类
@SpringBootTest
@RunWith(SpringRunner.class)
class RabbitmqSpringbootApplicationTests {
@Autowired
private RabbitTemplate rabbitTemplate;
@Test
void contextLoads() {
rabbitTemplate.convertAndSend("testEx", "test01", "test01");
rabbitTemplate.convertAndSend("testEx", "test02", "test02");
}
}
(2)消费者
@Component
public class Consumer {
@RabbitListener(queues = {"test01"})
public void consumer01(@Payload String msg, Channel channel, @Headers Map<String,Object> headers) throws IOException {
System.out.println(msg);
Long tag = (Long) headers.get(AmqpHeaders.DELIVERY_TAG);
channel.basicAck(tag, false);
}
@RabbitListener(queues = {"test02"})
public void consumer02(@Payload String msg, Channel channel, @Headers Map<String,Object> headers) throws IOException {
System.out.println(msg);
Long tag = (Long) headers.get(AmqpHeaders.DELIVERY_TAG);
channel.basicAck(tag, false);
}
}
此处消费者取消自动应答,改为手动应答