rabbitMQ工作模式(二)路由模式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了rabbitMQ工作模式(二)路由模式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3239字,纯文字阅读大概需要5分钟。
内容图文
码云地址:https://gitee.com/menbbo/springboot-rabbitmq-routing.git
RabbitMQ的工作模式包括了:简单模式、工作队列模式、发布订阅模式、路由模式、TOPIC(通配符模式)以及RPC。本文主要介绍路由模式。
上图是RabbitMQ的路由工作模式,该模式下一个交换机可以绑定多个队列,每个队列可以指定多个RoutingKey,每个消费者监听自己的队列,生产者将信息发送给交换机,交换机用该信息的routingkey判断与哪个队列的RoutingKey相等,将信息发送给与其RoutingKey相等的队列中。
SpringBoot整合RabbitMQ实现路由工作模式
实现生产者
1.创建父工程springboot-rabbit-routing,父工程下创建producer模块作为生产者,pom文件中导入依赖。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>
2.application.properties配置文件中配置rabbitMQ相关信息:
spring.rabbitmq.host=127.0.0.1 spring.rabbitmq.port=5672 spring.rabbitmq.username=guest spring.rabbitmq.password=guest server.port=8082
3.创建RabbitConfig类,用来生成队列,交换机,并将其绑定,设定routingKey,在类中创建了emailQueue以及SMSQueue两个队列。
import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.BindingBuilder; import org.springframework.amqp.core.DirectExchange; import org.springframework.amqp.core.Queue; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class RabbitmqConfig { @Bean(name = "emailQueue") public Queue createEmailQueue(){ returnnew Queue("emailQueue"); //创建email队列 } @Bean(name = "SMSQueue") public Queue createSMSQueue(){ returnnew Queue("SMSQueue"); // 创建SMS队列 } /** * 创建DirectExchange类型的交换机 * @return*/ @Bean(name = "RoutingExChange") public DirectExchange directExchange(){ returnnew DirectExchange("RoutingExChange"); } /** * 将email队列与交换机绑定 * @return*/ @Bean public Binding bindingExchangeEmail(@Qualifier("emailQueue") Queue eamilQueue,@Qualifier("RoutingExChange") DirectExchange directExchange){ return BindingBuilder.bind(eamilQueue).to(directExchange).with("email"); //将队列与交换机绑定 并设定routingkey } @Bean public Binding bindingExchangeSMS(@Qualifier("SMSQueue") Queue SMSQueue,@Qualifier("RoutingExChange") DirectExchange directExchange){ return BindingBuilder.bind(SMSQueue).to(directExchange).with("SMS"); //将RoutingExChange与队列SMSQueue绑定,设定routingKey为SMS } }
4.测试类中将信息发送到相关队列中,分别通过RoutingKey参数来实现发送信息到不同队列。
@SpringBootTest class ProducerApplicationTests { @Autowired private RabbitTemplate rabbitTemplate; @Test void contextLoads() { String message1 = "路由模式发送邮件信息"; rabbitTemplate.convertAndSend("RoutingExChange","email",message1);// String message2 = "路由模式发送SMS信息"; rabbitTemplate.convertAndSend("RoutingExChange","SMS",message2); } }
实现消费者
1.消费者共有两个,分别是sms_consumer和email_consumer。分别创建这两个module,以sms_consumer为例,首先导入maven依赖。
<dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit</artifactId> </dependency>
2.配置RabbitMQ相关信息。
spring.rabbitmq.host=127.0.0.1 spring.rabbitmq.port=5672 spring.rabbitmq.username=guest spring.rabbitmq.password=guest server.port=8083
3.创建SMSConsumer类,用来从队列中接收信息。
@Component @RabbitListener(queues = "SMSQueue")//消费者对SMSQueue队列进行监听 publicclass SMSConsumer { @RabbitHandler publicvoid receiveMessage(String data){ System.out.println("SMS消费信息:"+data); } }
实验结果:
启动生产者,查看RabbitMQ管理界面,发现队列中存放了信息。
分别启动两个消费者,消费者分别取得消息。
原文:https://www.cnblogs.com/menbo/p/13449678.html
内容总结
以上是互联网集市为您收集整理的rabbitMQ工作模式(二)路由模式全部内容,希望文章能够帮你解决rabbitMQ工作模式(二)路由模式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。