当前位置: 首页 > news >正文

网站制作把图片做背景品牌注册查询官网入口

网站制作把图片做背景,品牌注册查询官网入口,衡水手机网站建设价格,建设银行官网登录java实现队列和交换机的声明 在之前我们都是基于RabbitMQ控制台来创建队列、交换机。但是在实际开发时,队列和交换机是程序员定义的,将来项目上线,又要交给运维去创建。那么程序员就需要把程序中运行的所有队列和交换机都写下来,…

java实现队列和交换机的声明

在之前我们都是基于RabbitMQ控制台来创建队列、交换机。但是在实际开发时,队列和交换机是程序员定义的,将来项目上线,又要交给运维去创建。那么程序员就需要把程序中运行的所有队列和交换机都写下来,交给运维。在这个过程中是很容易出现错误的。
因此推荐的做法是由程序启动时检查队列和交换机是否存在,如果不存在自动创建。

在这里插入图片描述

3.8.1.基本API

SpringAMQP提供了一个Queue类,用来创建队列:
image.png

SpringAMQP还提供了一个Exchange接口,来表示所有不同类型的交换机:
image.png
在这里插入图片描述
我们可以自己创建队列和交换机,不过SpringAMQP还提供了ExchangeBuilder来简化这个过程:
image.png
而在绑定队列和交换机时,则需要使用BindingBuilder来创建Binding对象:
image.png

3.8.2.fanout示例(基于Bean声明)

在这里插入图片描述

在consumer中创建一个类,声明队列和交换机:

package com.itheima.consumer.config;import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.FanoutExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class FanoutConfig {/*** 声明交换机* @return Fanout类型交换机*/@Beanpublic FanoutExchange fanoutExchange(){return new FanoutExchange("hmall.fanout");}/*** 第1个队列*/@Beanpublic Queue fanoutQueue1(){return new Queue("fanout.queue1");}/*** 绑定队列和交换机*/@Beanpublic Binding bindingQueue1(Queue fanoutQueue1, FanoutExchange fanoutExchange){return BindingBuilder.bind(fanoutQueue1).to(fanoutExchange);}/*** 第2个队列*/@Beanpublic Queue fanoutQueue2(){return new Queue("fanout.queue2");}/*** 绑定队列和交换机*/@Beanpublic Binding bindingQueue2(Queue fanoutQueue2, FanoutExchange fanoutExchange){return BindingBuilder.bind(fanoutQueue2).to(fanoutExchange);}
}

实际测试:

在这里插入图片描述

package com.itheima.consumer.config;import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class FanoutConfiguration {/*** 声明fanout类型交换机* @return*/@Beanpublic FanoutExchange fanoutExchange(){// 两种声明方法都可以// return ExchangeBuilder.fanoutExchange("hmall.fanout2").build();return new FanoutExchange("hmall.fanout2");}/*** 声明默认持久化的fanout.queue3队列* @return*/@Beanpublic Queue fanoutQueue3(){// 两种声明方法都可以// return QueueBuilder.durable("fanout.queue3").build();return new Queue("fanout.queue3");}/*** 绑定队列和交换机* @param fanoutExchange* @param fanoutQueue3* @return*/@Beanpublic Binding fanoutBinding3(FanoutExchange fanoutExchange,Queue fanoutQueue3){return BindingBuilder.bind(fanoutQueue3).to(fanoutExchange);}/*** 声明默认持久化的fanout.queue4队列* @return*/@Beanpublic Queue fanoutQueue4(){// 两种声明方法都可以return QueueBuilder.durable("fanout.queue4").build();
//        return new Queue("fanout.queue4");}/*** 绑定队列和交换机* @return*/@Beanpublic Binding fanoutBinding4(){return BindingBuilder.bind(fanoutQueue4()).to(fanoutExchange());}
}

3.8.2.direct示例(基于Bean声明)

direct模式由于要绑定多个KEY,会非常麻烦,每一个Key都要编写一个binding:

package com.itheima.consumer.config;import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class DirectConfig {/*** 声明交换机* @return Direct类型交换机*/@Beanpublic DirectExchange directExchange(){return ExchangeBuilder.directExchange("hmall.direct").build();}/*** 第1个队列*/@Beanpublic Queue directQueue1(){return new Queue("direct.queue1");}/*** 绑定队列和交换机*/@Beanpublic Binding bindingQueue1WithRed(Queue directQueue1, DirectExchange directExchange){return BindingBuilder.bind(directQueue1).to(directExchange).with("red");}/*** 绑定队列和交换机*/@Beanpublic Binding bindingQueue1WithBlue(Queue directQueue1, DirectExchange directExchange){return BindingBuilder.bind(directQueue1).to(directExchange).with("blue");}/*** 第2个队列*/@Beanpublic Queue directQueue2(){return new Queue("direct.queue2");}/*** 绑定队列和交换机*/@Beanpublic Binding bindingQueue2WithRed(Queue directQueue2, DirectExchange directExchange){return BindingBuilder.bind(directQueue2).to(directExchange).with("red");}/*** 绑定队列和交换机*/@Beanpublic Binding bindingQueue2WithYellow(Queue directQueue2, DirectExchange directExchange){return BindingBuilder.bind(directQueue2).to(directExchange).with("yellow");}
}

3.8.4.基于注解声明

基于@Bean的方式声明队列和交换机比较麻烦,Spring还提供了基于注解方式来声明。

注意声明的文件是Listener下的,在监听者位置声明

在这里插入图片描述

例如,我们同样声明Direct模式的交换机和队列:

@RabbitListener(bindings = @QueueBinding(value = @Queue(name = "direct.queue1"),exchange = @Exchange(name = "hmall.direct", type = ExchangeTypes.DIRECT),key = {"red", "blue"}
))
public void listenDirectQueue1(String msg){System.out.println("消费者1接收到direct.queue1的消息:【" + msg + "】");
}@RabbitListener(bindings = @QueueBinding(value = @Queue(name = "direct.queue2"),exchange = @Exchange(name = "hmall.direct", type = ExchangeTypes.DIRECT),key = {"red", "yellow"}
))
public void listenDirectQueue2(String msg){System.out.println("消费者2接收到direct.queue2的消息:【" + msg + "】");
}

是不是简单多了。
再试试Topic模式:

@RabbitListener(bindings = @QueueBinding(value = @Queue(name = "topic.queue1"),exchange = @Exchange(name = "hmall.topic", type = ExchangeTypes.TOPIC),key = "china.#"
))
public void listenTopicQueue1(String msg){System.out.println("消费者1接收到topic.queue1的消息:【" + msg + "】");
}@RabbitListener(bindings = @QueueBinding(value = @Queue(name = "topic.queue2"),exchange = @Exchange(name = "hmall.topic", type = ExchangeTypes.TOPIC),key = "#.news"
))
public void listenTopicQueue2(String msg){System.out.println("消费者2接收到topic.queue2的消息:【" + msg + "】");
}

小结

在这里插入图片描述

http://www.sczhlp.com/news/150285/

相关文章:

  • 连云港市赣榆区建设局网站杭州logo设计公司哪家好
  • 酒店网站的规划与建设网站如何集成微信支付
  • 上海网站制作网站广州卓天跨境电商网站
  • 大连鼎信网站建设公司地址广州越秀区租房子多少钱一个月
  • 举例说明网络营销的概念白山seo
  • 电子商务网站的后台管理系统中国楼市最新消息2022
  • ArcGIS 公众号推荐
  • 跨网文件交换系统:数字化时代企业与机构的数据安全传输利器
  • 期货市场API对接完全指南:实时行情获取与实战应用
  • 有什么网站可以接手工加工做信誉好的扬州网站建设
  • 石家庄网站制作报价原创主题 wordpress
  • 2016年做网站能赚钱wordpress do_
  • 中小企业网站提供了什么网站建立好如何做seo
  • 南宁市网站建设公司建设文明网站包括
  • 哈尔滨建站流程网站必须做等保合规
  • 公司网站建设济南兴田德润厉害吗网页制作软件是应用软件吗
  • 小辣椒昆明网站开发建筑设计图纸
  • 多站点wordpress简数采集器代理网站开发
  • 哪个网站做海报好小程序商城开发稳定吗
  • 唐山有制作网站的没电脑网页游戏排行
  • 湖南做网站 就问磐石网络专业网站如何做微信推广方案
  • Tomcat使用redis管理session
  • NOC片上网络总线初探
  • AT_agc037_c [AGC037C] Numbers on a Circle
  • 记账本|基于SSM的家庭记账本小程序设计与实现(源码+数据库+文档) - 实践
  • 在线制作钓鱼网站源码佛山外贸网站建设机构
  • 江西省做网站网站权重是怎样进行传递的
  • 灵璧做网站的公司微电商平台
  • 中文wordpress网站模板下载失败做哪个网站好
  • 深圳论坛网站建设网站建设运营属于经营范围