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

谷德设计网站微信商城怎么运营

谷德设计网站,微信商城怎么运营,沧州做网站的公司排名,高校网站建设资料库目录 11.4 SpringAMQP 11.4.2 Work Queue工作队列 11.4.3 发布订阅模型 11.4.4 FanoutExchange(广播交换机) 11.4.5 DirectExchange(路由模式交换机) 11.4.6 TopicExchange 11.5 消息转换器 11.4 SpringAMQP 父工程引入AMQP依赖 <!--AMQP依赖&#xff0c;包含RabbitMQ…

目录

11.4 SpringAMQP

11.4.2 Work Queue工作队列

11.4.3 发布订阅模型

11.4.4 FanoutExchange(广播交换机)

11.4.5 DirectExchange(路由模式交换机)

11.4.6 TopicExchange

11.5 消息转换器


11.4 SpringAMQP

父工程引入AMQP依赖

  <!--AMQP依赖,包含RabbitMQ--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>

编写测试方法

yml配置文件中编写配置

  spring:rabbitmq:host: 192.168.142.130   # rabbitmq的ip地址port: 5672  # 端口username: xxxxxpassword: xxxxxxxvirtual-host: /

发消息测试

  @SpringBootTestpublic class AMQPTest {​@Autowiredprivate RabbitTemplate rabbitTemplate;​@Testpublic void testSendMessage2SimpleQueue(){String queueName = "simple.queue";String message = "hello,spring amqp";rabbitTemplate.convertAndSend(queueName,message);}}

在consumer中编写消费逻辑,监听simple.queue

配置文件配置 :

  spring:rabbitmq:host: 192.168.142.129   # rabbitmq的ip地址port: 5672  # 端口username: xxxxxpassword: xxxxxvirtual-host: /

编写监听类

  @Componentpublic class SpringRabbitListener {@RabbitListener(queues = "simple.queue")public void ListenSimpleQueue(String msg){System.out.println("消费者接收到simple.queue的消息 : " + msg);}}

启动主启动类,控制台可看到输出的监听到的消息

消息一旦被消费,就会从队列中删除,没有回收机制

11.4.2 Work Queue工作队列

publisher代码

  @Testpublic void testSendMessage2WorkQueue() throws InterruptedException {String queueName = "simple.queue";String message = "hello,spring amqp__";for(int i = 1 ; i <= 50 ; i ++){rabbitTemplate.convertAndSend(queueName,message + i);   Thread.sleep(20);}}

consumer接收消息

  // 消费者1@RabbitListener(queues = "simple.queue")public void ListenWork1Queue(String msg) throws InterruptedException {System.out.println("消费者1接收到simple.queue的消息 : " + msg + LocalTime.now());Thread.sleep(20);}​// 消费者2@RabbitListener(queues = "simple.queue")public void ListenWork2Queue(String msg) throws InterruptedException {System.err.println("消费者2接收到simple.queue的消息 : " + msg + LocalTime.now());Thread.sleep(200);}

消息预取机制使得两者平均分配消息 不符预期

配置文件中 :

处理预取值

  spring:rabbitmq:host: 192.168.142.129   # rabbitmq的ip地址port: 5672  # 端口username: xxxxxxpassword: xxxxxxxvirtual-host: /listener:simple:prefetch: 1    # 每次只能获取一条消息 ,处理完成才能获取下一个信息

11.4.3 发布订阅模型

11.4.4 FanoutExchange(广播交换机)

步骤一 : 声明交换机,队列 , 并绑定队列和交换机

在consumer中编写配置类

  @Configurationpublic class FanoutConfig {// 声明交换机@Beanpublic FanoutExchange fanoutExchange(){return new FanoutExchange("xinbo.fanout");}​// 声明队列1@Beanpublic Queue fanoutQueue1(){return new Queue("fanout.queue1");}​// 绑定队列1到交换机@Beanpublic Binding fanoutBindind(Queue fanoutQueue1,FanoutExchange fanoutExchange){return BindingBuilder.bind(fanoutQueue1).to(fanoutExchange);}​// 声明队列2@Beanpublic Queue fanoutQueue2(){return new Queue("fanout.queue2");}​// 绑定队列2到交换机@Beanpublic Binding fanoutBindind2(Queue fanoutQueue2,FanoutExchange fanoutExchange){return BindingBuilder.bind(fanoutQueue2).to(fanoutExchange);}}

消息监听 :

  @Componentpublic class SpringRabbitListener {​// 消费者1@RabbitListener(queues = "fanout.queue1")public void ListenWork1Queue(String msg) throws InterruptedException {System.out.println("消费者1接收到fanout.queue1的消息 : " + msg + LocalTime.now());Thread.sleep(20);}​// 消费者2@RabbitListener(queues = "fanout.queue2")public void ListenWork2Queue(String msg) throws InterruptedException {System.err.println("消费者2接收到fanout.queue2的消息 : " + msg + LocalTime.now());Thread.sleep(200);}}

消息发送 :

  @Testpublic void testSendFanoutExchange(){String exchangeName = "xinbo.fanout";               // 交换机名称String message = "hello,everyone";rabbitTemplate.convertAndSend(exchangeName,null,message);}

11.4.5 DirectExchange(路由模式交换机)

利用@RabbitListener声明Exchange Queue RoutingKey

SpirngRabbitListener中

  @Componentpublic class SpringRabbitListener {​@RabbitListener(bindings = @QueueBinding(value = @Queue(name = "direct.queue1"),exchange = @Exchange(name = "xinbo.direct",type = ExchangeTypes.DIRECT),key = {"red","blue"}))public void ListenDirectQueue1(String msg) throws InterruptedException {System.out.println("消费者接收到direct.queue1的消息 : " + msg + LocalTime.now());Thread.sleep(20);}​@RabbitListener(bindings = @QueueBinding(value = @Queue(name = "direct.queue2"),exchange = @Exchange(name = "xinbo.direct",type = ExchangeTypes.DIRECT),key = {"red","yellow"}))public void ListenDirectQueue2(String msg) throws InterruptedException {System.out.println("消费者接收到direct.queue2的消息 : " + msg + LocalTime.now());Thread.sleep(20);}​}

发送消息测试 :

  @Testpublic void testSendDirectExchange(){// 交换机名称String exchangeName = "xinbo.direct";String message = "hello,blue";rabbitTemplate.convertAndSend(exchangeName,"blue",message);}

11.4.6 TopicExchange

绑定队列和交换机的关系 :

  @Componentpublic class SpringRabbitListener {@RabbitListener(bindings = @QueueBinding(value = @Queue(name = "topic.queue1"),exchange = @Exchange(name="xinbo.topic",type = ExchangeTypes.TOPIC),key = "china.#"))public void ListenTopicQueue1(String msg){System.out.println("消费者接收到topic.queue1的消息 : " + msg + LocalTime.now());}​@RabbitListener(bindings = @QueueBinding(value = @Queue(name = "topic.queue2"),exchange = @Exchange(name="xinbo.topic",type = ExchangeTypes.TOPIC),key = "#.news"))public void ListenTopicQueue2(String msg){System.out.println("消费者接收到topic.queue2的消息 : " + msg + LocalTime.now());}​}

发送消息 :

  @Testpublic void testSendTopicExchange(){// 交换机名称String exchangeName = "xinbo.topic";String message = "中国发生了xxxxx";rabbitTemplate.convertAndSend(exchangeName,"china.news",message);}

11.5 消息转换器

发送和接受json类型的消息

添加依赖 :

  <dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-xml</artifactId></dependency>

在配置类中

  @Beanpublic MessageConverter messageCondition(){return new Jackson2JsonMessageConverter();}

接收消息 :

引依赖 :同上

在Listener中 :

  @RabbitListener(queues = "object.queue")public void ListenObjectQueue(Map<String,Object> msg){System.out.println(msg);}
http://www.yayakq.cn/news/899233/

相关文章:

  • 如何为公司建立网站网站改了关键词
  • 写作网站最大网页视频下载软件免费版
  • 沈阳网站制作的公司广州各区风险区域最新动态
  • 帮朋友做网站程序界面设计
  • 织梦网站tag自定义插件社交电商平台种类
  • 设计的好看的网站wordpress发布文章禁用谷歌字体
  • 电商网站优化方案营销型网站分析
  • 有哪些做平面设计好的网站有哪些如何做一个电商
  • 枸杞网站的建设方案公司宣传片如何制作
  • 营销型网站应用本地网站开发
  • 保定专业做网站的公司阿里企业邮箱个人登录
  • 电子商城网站怎么做张家港做淘宝网站
  • 网站后台域名网站开发部署到国外
  • 网站如何做微信推广方案西山网站建设
  • 免费网站管理系统下载google搜索引擎
  • 新泰营销型网站建设濮阳做公司网站
  • 手机网站模板带后台广西南宁做网站的公司
  • 制作网页时关于可以采用的图像文件格式正确的描述是网站大图片优化
  • 钓鱼网站链接安丘做网站
  • 网站工商网监标郑州的设计公司
  • 西安专业网站建设服务想自己做网站 有免费的吗
  • 石家庄网站怎么建设合作做网站的总结和心得
  • php网站开发开发网站教程海宁做网站
  • 做网站前期预算欧米茄手表价格及图片官方网站
  • 在线做网站索引网站做好了前端 后端怎么做
  • 邯郸专业做网站全球互联网中心在哪里
  • 2核4g做网站注册城乡规划师备考
  • 网站无障碍建设规定国家域名注册有什么用
  • 在线html5制作网站个人网页设计源代码
  • 专注高密网站建设伊利集团网站建设实训