标签:return SpringBoot RabbitMQ Bean 交换机 springframework 整合 org public
注:这里记得给先我们用户授权virtualhost,由于我使用的virtualhost为'/',用户为admin,所以使用以下命令进行授权
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
生产者
1.导入相关依赖包
在创建SpringBoot项目的时候其实就可以选择相关依赖包进行导入
<!--springboot整合rabbitmq依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> <!-- lombok插件 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.10</version> </dependency>
2.修改application.yml文件
server: port: 8081 spring: application: name: rabbitmq-provider rabbitmq: host: 192.168.111.129 port: 5672 username: admin password: 123 virtual-host: /
3.创建RabbitMQ配置文件
在SpringBoot中我们通过配置文件来实现交换机、队列的创建与绑定
import org.springframework.amqp.core.*; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class TestRabbitConfig { /** * 创建交换机 * durable:是否持久化 * autoDelete:是否自动删除,当没有生产者或消费者使用该交换机时,会自动删除 */ //创建fanout交换机 @Bean public FanoutExchange fanoutExchange(){ return new FanoutExchange("fanout-exchange",true,false); } //创建direct交换机 @Bean public DirectExchange directExchange(){ return new DirectExchange("direct-exchange",true,false); } //创建topic交换机 @Bean TopicExchange topicExchange(){ return new TopicExchange("topic-exchange",true,false); } /** * 创建队列 * durable:是否持久化 * exclusive:默认false,只能在当前创建连接时使用,连接关闭后队列自动删除,该优先级高于durable * autoDelete:是否自动删除,当没有生产者或消费者使用该交换机时,会自动删除 */ @Bean public Queue emailQueue(){ return new Queue("emailQueue",true); } @Bean public Queue smsQueue(){ return new Queue("smsQueue",true); } /** * 绑定交换机和队列 */ //email队列绑定fanout交换机 @Bean public Binding emailFanoutBinding(){ return BindingBuilder.bind(emailQueue()).to(fanoutExchange()); } //sms队列绑定fanout交换机 @Bean public Binding smsFanoutBinding(){ return BindingBuilder.bind(smsQueue()).to(fanoutExchange()); } //sms队列绑定direct交换机 @Bean public Binding smsDirectBinding(){ return BindingBuilder.bind(smsQueue()).to(directExchange()).with("sms"); } //email队列绑定topic交换机 @Bean public Binding emailTopicBinding(){ return BindingBuilder.bind(emailQueue()).to(topicExchange()).with("email.#"); } //sms队列绑定topic交换机 @Bean public Binding smsTopicBinding(){ return BindingBuilder.bind(smsQueue()).to(topicExchange()).with("sms.#"); } }
4.测试
import org.junit.jupiter.api.Test; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest class RabbitmqProviderApplicationTests { @Autowired RabbitTemplate rabbitTemplate; @Test void testFanout(){ String msg = "fanout"; rabbitTemplate.convertAndSend("fanout-exchange",null,msg); } @Test void testDirect() { String msg = "direct"; rabbitTemplate.convertAndSend("direct-exchange","sms",msg); } @Test void testTopic(){ String msg = "email-topic"; String msg1 = "sms-topic"; rabbitTemplate.convertAndSend("topic-exchange","email.chen",msg); rabbitTemplate.convertAndSend("topic-exchange","sms.chen",msg1); } }
消费者
1.导入相关依赖包
在创建SpringBoot项目的时候其实就可以选择相关依赖包进行导入
<!--springboot整合rabbitmq依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> <!-- lombok插件 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.10</version> </dependency>
2.修改application.yml文件
server: port: 8082 spring: application: name: rabbitmq-consumer rabbitmq: host: 192.168.111.129 port: 5672 username: admin password: 123 virtual-host: /
3.创建Service接收消息
import org.springframework.amqp.rabbit.annotation.RabbitHandler; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Service; @Service public class DirectReceiver { @RabbitHandler @RabbitListener(queues = "emailQueue") //监听的队列名称 public void emailProcess(String testMessage){ System.out.println("emailQueue: " + testMessage.toString()); } @RabbitHandler @RabbitListener(queues = "smsQueue") //监听的队列名称 public void smsProcess(String testMessage){ System.out.println("smsQueue: " + testMessage.toString()); } }
标签:return,SpringBoot,RabbitMQ,Bean,交换机,springframework,整合,org,public 来源: https://www.cnblogs.com/cjzzz/p/16170395.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。