一、点对点模式
1、改pom
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
2、写yml
spring:
application:
name: rabbitmq
rabbitmq:
host: 00.00.00.00
port: 5672
username: test
password: 123456
virtual-host: /athome
3、生产者
@RunWith(SpringRunner.class)
@SpringBootTest
class RabbitmqApplicationTests {
@Autowired
private RabbitTemplate rabbitTemplate;
@Test
void contextLoads() {
rabbitTemplate.convertAndSend("hello2", "HELLO WORLD33333");
}
}
4、消费者
@Component
@RabbitListener(queuesToDeclare = @Queue(value = "hello2"))
public class consumer01 {
@RabbitHandler
public void reveive(String message) {
System.out.println("---------" + message);
}
}
二、work queue模型
@Test
public void Test() {
for (int i = 0; i < 10; i++) {
rabbitTemplate.convertAndSend("helloWork", "测试work queue模型" + i);
}
}
@RabbitListener(queuesToDeclare = {@Queue(value = "helloWork")})
public void reveive(String message) {
System.out.println("消费到的消息1:" + message);
}
@RabbitListener(queuesToDeclare = {@Queue(value = "helloWork")})
public void reveive2(String message) {
System.out.println("消费到的消息2:" + message);
}
三、fanout模型,也称为广播模型
@Test
public void TestFanout() {
rabbitTemplate.convertAndSend("fanoutceshi", "", "fantoutceshi");
}
@RabbitListener(bindings = {@QueueBinding(value = @Queue,//不指定队列的名称为临时队列
exchange = @Exchange(value = "fanoutceshi", type = ExchangeTypes.FANOUT))})
public void receive(String message) {
System.out.println("---------" + message);
}
@RabbitListener(bindings = {@QueueBinding(value = @Queue,//不指定队列的名称为临时队列
exchange = @Exchange(value = "fanoutceshi", type = ExchangeTypes.FANOUT))})
public void receive2(String message) {
System.out.println("++++++++++" + message);
}
四、direct模型,路由的作用
@Test
public void TestDirect() {
rabbitTemplate.convertAndSend("directceshi", "error", "directceshi");
}
@RabbitListener(bindings = {@QueueBinding(value = @Queue,
exchange = @Exchange(value = "directceshi", type = ExchangeTypes.DIRECT),
key = {"info", "warn", "error"})})
public void reveive(String message) {
System.out.println("消费者1:" + message);
}
@RabbitListener(bindings = {@QueueBinding(value = @Queue,
exchange = @Exchange(value = "directceshi", type = ExchangeTypes.DIRECT),
key = {"error"})})
public void reveive2(String message) {
System.out.println("消费者2:" + message);
}
五、topic模型,路由模糊匹配
@Test
public void TestTopic() {
rabbitTemplate.convertAndSend("topicceshi", "product.save.aa", "topic模式测试");
}
@RabbitListener(bindings = {@QueueBinding(value = @Queue,
exchange = @Exchange(value = "topicceshi", type = ExchangeTypes.TOPIC),
key = {"order.*", "product.#", "user.*"})})
public void reveive(String meg) {
System.out.println("消费者一:" + meg);
}
@RabbitListener(bindings = {@QueueBinding(value = @Queue,
exchange = @Exchange(value = "topicceshi", type = ExchangeTypes.TOPIC),
key = {"order.*",})})
public void reveive2(String meg) {
System.out.println("消费者二:" + meg);
}
@RabbitListener(bindings = {@QueueBinding(value = @Queue,
exchange = @Exchange(value = "topicceshi", type = ExchangeTypes.TOPIC),
key = {"product.#",})})
public void reveive3(String meg) {
System.out.println("消费者三:" + meg);
}