1.依赖与配置
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
server:
port: 9009
spring:
application:
name: tensquare-sms
rabbitmq:
host: 192.168.74.130
2.配置生产者
package com.tensquare.rabbit.customer;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
@RabbitListener(queues = "itheima")// 监听队列
public class Customer2 {
// 消息处理
@RabbitHandler
public void getMsg(String msg){
System.out.println("itheima:"+msg);
}
}
3.配置消费者
package com.tensquare.test;
import com.tensquare.rabbit.RabbitApplication;
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;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = RabbitApplication.class)
public class ProductTest {
// 使用模板
@Autowired
private RabbitTemplate rabbitTemplate;
/**
* direct
*/
@Test
public void sendMsg1(){
rabbitTemplate.convertAndSend("itcast", "直接模式测试");
}
/**
* fanout
*/
@Test
public void sendMsg2(){
rabbitTemplate.convertAndSend("chuanzhi","","分裂模式测试");
}
/**
* topic
*/
@Test
public void sendMsg3(){
rabbitTemplate.convertAndSend("topic84","good.log","主题模式测试");
}
}
4.rabbitMq的几种工作模式
4.1.direct模式
无交换机模式。
4.2.fanout模式
step:
1.创建一个交换机
2.为该交换机绑定多个mq
3.消息分发至交换机,由其转发给绑定的所有mq
/**
* 分裂模式
* 第二个参数为 routeKey,若指定该参数值,则变成了主题模式
*/
@Test
public void sendMsg2(){
rabbitTemplate.convertAndSend("chuanzhi","","分裂模式测试");
}
不得不说springdata系列都非常简单方便!
4.3.topic模式
step:
1.创建一个交换机
2.为该交换机绑定多个mq,同时,为每个队列指定 routeKey
3.消息分发至交换机,由其转发给特定routeKey的mq
/**
* 主题模式
*/
@Test
public void sendMsg3(){
rabbitTemplate.convertAndSend("zaki","zaikey","主题模式测试");
}
4.注意routeKey的匹配规则,参考上述主题模式图。