SpringBoot整合RabbitMQ五种常用模型

SpringBoot整合RabbitMQ五种常用模型目录 1 SpringBoot 整合 RabbitMQ 使用 1 引入依赖 2 做配置 application yml3 helloworld4 work5 fanout6 routing7 Topic 订阅模式 动态路由模型 1 SpringBoot 整合 RabbitMQ 使用 1 引入依赖 引入与 rabbitmq 集成的依赖 dependency groupId groupId dependency

目录

1.SpringBoot整合RabbitMQ使用

1.引入依赖:

2.做配置 :application.yml

3.hello world

4.work

5.fanout

6.routing

7.Topic订阅模式(动态路由模型)


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

(0)
上一篇 2026年3月16日 下午6:09
下一篇 2026年3月16日 下午6:09


相关推荐

  • ThinkPHP5旅游管理系统

    ThinkPHP5旅游管理系统Q1115487855ThinkPHP5旅游管理系统一系统介绍本旅游管理系统基于ThinkPHP5开发,系统角色分为用户和管理员两种,系统分为前后台,用户可在前台注册登录、发布行程单和游记等,管理员登录后台进行管理。技术栈ThinkPHP5+mysql+bootstrap+jquery+vscode+phpstudy二系统功能用户1注册/登录/注销2个人中心

    2022年4月30日
    59
  • Python 发送 email 的三种方式

    Python 发送 email 的三种方式Python发送email的三种方式,分别为使用登录邮件服务器、使用smtp服务、调用sendmail命令来发送三种方法原文请参见米扑博客:Python发送email的三种方式Python发送email比较简单,可以通过登录邮件服务来发送,linux下也可以使用调用sendmail命令来发送,还可以使用本地或者是远程的smtp服务来发送邮件,不管是单个,群发,还是抄送都比较容易实现。…

    2022年7月11日
    27
  • 基于JPBC的SM9算法的java实现与测试

    基于JPBC的SM9算法的java实现与测试基于 JPBC 的 SM9 算法的 java 实现与测试

    2026年3月16日
    1
  • 国内免费镜像GPT:2025年最新最全的访问与使用指南

    国内免费镜像GPT:2025年最新最全的访问与使用指南

    2026年3月15日
    2
  • Singleton单例模式

    Singleton单例模式Singleton 是对全局变量的取代策略作用 保证一个类只能有一个实例 并提供一个全局唯一的访问点 仅有一个实例 通过类的静态成员变量来体现 提供访问它的全局访问点 访问静态成员变量的静态成员函数来体现 设计模式 一书中给出了一种很不错的实现 定义一个单例类 使用类的私有静态指针变量指向类的唯一实例 并用一个公有的静态方法获取该实例 单例模式通过类本身来管理其唯一实例 这种特性提供了解决问题的方法 唯一的实例是类的一个普通对象 但设计这个类时 让它只能创建一个实例并提供对此实例的全局访问

    2026年3月19日
    2
  • bool型函数「建议收藏」

    bool型函数「建议收藏」bool介绍C++中bool函数如果值非零就为True,为零就是False。比如写数据结构的时候,有时候需要判断一下链表是不是为空,这时候需要用到bool函数,再者,你看到bool就知道这个函数返回值只是用于判断真假。bool函数返回的只有true和false。而int会返回各种数字,但是你关心的不是数字的多少,而是这个数字为不为0.所以这种情况用bool会更加简洁,规范,你看到bo…

    2022年6月5日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号