目录
1.SpringBoot整合RabbitMQ使用
1.引入依赖:
org.springframework.boot
spring-boot-starter-amqp
2.做配置 :application.yml
spring: application: name: rabbitmq-springboot rabbitmq: host: 192.168.231.141 port: 5672 username: ems password: virtual-host: /ems
3.hello world
@SpringBootTest(classes = RabbitmqSpringbootApplication.class) @RunWith(SpringRunner.class) @ComponentScan("com.liziyi") // @EnableRabbit启用@RabbitListener @EnableRabbit public class TestRabbitMQ { // 注入rabbitTemplate @Autowired private RabbitTemplate rabbitTemplate; // hello world @Test public void test() { rabbitTemplate.convertAndSend("hello","hello world"); } }
// 被工厂扫描道 @Component // 消费者(声明队列) @RabbitListener(queuesToDeclare = @Queue("hello")) public class HelloCustomer { // 代表通过下面方法取消息 @RabbitHandler public void receivel(String message) { System.out.println("message = " + message); } }
但是最后执行了。在网页上没有见到新建的队列
4.work
@SpringBootTest(classes = RabbitmqSpringbootApplication.class) @RunWith(SpringRunner.class) @ComponentScan("com.liziyi") // @EnableRabbit启用@RabbitListener @EnableRabbit public class TestRabbitMQ { // 注入rabbitTemplate @Autowired private RabbitTemplate rabbitTemplate; // work @Test public void testWork() { for (int i = 0; i < 10; i++) { rabbitTemplate.convertAndSend("work","work模型"+i); } } }
@Component public class WorkCustomer { @RabbitListener(queuesToDeclare = @Queue("work")) public void receivel(String message) { System.out.println("message1 =" +message); } @RabbitListener(queuesToDeclare = @Queue("work")) public void receivel2(String message) { System.out.println("message2 =" +message); } }
5.fanout
@SpringBootTest(classes = RabbitmqSpringbootApplication.class) @RunWith(SpringRunner.class) @ComponentScan("com.liziyi") // @EnableRabbit启用@RabbitListener @EnableRabbit public class TestRabbitMQ { // 注入rabbitTemplate @Resource private RabbitTemplate rabbitTemplate; // fanout 广播 @Test public void testFanout() { rabbitTemplate.convertAndSend("logs","","fanout模型"); }
@Component public class FanoutCustomer { @RabbitListener(bindings = { @QueueBinding( // 直接写@Queue代表创建临时队列 value = @Queue, exchange = @Exchange(value = "logs",type = "fanout") //绑定的交换机 ) }) public void receivel(String message) { System.out.println("message =" + message); } @RabbitListener(bindings = { @QueueBinding( // 直接写@Queue代表创建临时队列 value = @Queue, exchange = @Exchange(value = "logs",type = "fanout") //绑定的交换机 ) }) public void receivel2(String message) { System.out.println("message2 =" + message); } }
6.routing
@SpringBootTest(classes = RabbitmqSpringbootApplication.class) @RunWith(SpringRunner.class) @ComponentScan("com.liziyi") // @EnableRabbit启用@RabbitListener @EnableRabbit public class TestRabbitMQ { // 注入rabbitTemplate @Resource private RabbitTemplate rabbitTemplate; //route 路由模式 @Test public void testTopic() { rabbitTemplate.convertAndSend("directs","info","发送info的key的路由信息"); }
@Component public class RouteCustomer { @RabbitListener(bindings = { @QueueBinding( // 直接写@Queue代表创建临时队列 value = @Queue, //绑定的交换机,名称和类型 exchange = @Exchange(value = "directs",type = "direct"), key = {"info","error","warn"} ) }) public void receivel1(String message) { System.out.println("message1 =" + message); } @RabbitListener(bindings = { @QueueBinding( // 直接写@Queue代表创建临时队列 value = @Queue, //绑定的交换机,名称和类型 exchange = @Exchange(value = "directs",type = "direct"), key = {"error"} ) }) public void receivel2(String message) { System.out.println("message2 =" + message); } }
7.Topic订阅模式(动态路由模型)
1.生产者
@SpringBootTest(classes = RabbitmqSpringbootApplication.class) @RunWith(SpringRunner.class) @ComponentScan("com.liziyi") // @EnableRabbit启用@RabbitListener @EnableRabbit public class TestRabbitMQ { // 注入rabbitTemplate @Autowired private RabbitTemplate rabbitTemplate; //topic 动态路由模式 订阅模式 @Test public void testTopic() { rabbitTemplate.convertAndSend("topics","user.save","user.save的路由信息"); }
2.消费者
@Component public class TopicCustomer { @RabbitListener(bindings = { @QueueBinding( // 直接写@Queue代表创建临时队列 value = @Queue, //绑定的交换机,名称和类型 exchange = @Exchange(value = "topics",type = "topic"), key = {"user.save","user.*"} ) }) public void receivel1(String message) { System.out.println("message1 =" + message); } @RabbitListener(bindings = { @QueueBinding( // 直接写@Queue代表创建临时队列 value = @Queue, //绑定的交换机,名称和类型 exchange = @Exchange(value = "topics",type = "topic"), key = {"order.#","produce.#","user.*"} ) }) public void receivel2(String message) { System.out.println("message2 =" + message); } }
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/228810.html原文链接:https://javaforall.net
