①. SpringBoot案例 - 发布与订阅模式
- ①. 生产和消费者工程如下
②. 导入依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
③. 编写yaml(生产者和消费者一样)
server: port: 8080 spring: rabbitmq: host: 139.198.169.136 port: 5672 virtual-host: /myvitrualhost username: tang password: 9602111022yxTZ@
④. 生产者配置文件如下
@Configuration public class FanoutRabbitConfig { //1. 声明交换机 @Bean public FanoutExchange fanoutOrderExchange() { return new FanoutExchange("fanout_order_exchange", true, false); } //2. 声明队列 @Bean public Queue emailQueue() { // durable:是否持久化,默认是false,持久化队列:会被存储在磁盘上,当消息代理重启时仍然存在,暂存队列:当前连接有效 // exclusive:默认也是false,只能被当前创建的连接使用,而且当连接关闭后队列即被删除。此参考优先级高于durable // autoDelete:是否自动删除,当没有生产者或者消费者使用此队列,该队列会自动删除。 // return new Queue("TestDirectQueue",true,true,false); //一般设置一下队列的持久化就好,其余两个就是默认false return new Queue("email.fanout.queue", true); } @Bean public Queue smsQueue() { return new Queue("sms.fanout.queue", true); } @Bean public Queue weixinQueue() { return new Queue("weixin.fanout.queue", true); } //3. 将队列和交换机绑定 //绑定 将队列和交换机绑定, 并设置用于匹配键:TestDirectRouting @Bean public Binding bindingEmail() { return BindingBuilder.bind(emailQueue()).to(fanoutOrderExchange()); } @Bean public Binding bindingSms() { return BindingBuilder.bind(smsQueue()).to(fanoutOrderExchange()); } @Bean public Binding bindingWeixin() { return BindingBuilder.bind(weixinQueue()).to(fanoutOrderExchange()); } }