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

优秀个人网站模板广州seo关键词

优秀个人网站模板,广州seo关键词,last login wordpress,中国能源建设集团采购网站进不去前言:在上一节中我们实现了SpringCloud Stream消息驱动里的消费者,实现了消息的消费者后,在日常运行中我们可能会遇到重复消费的问题,比如在如下场景中,订单系统我们做集群部署,都会从RabbitMQ中获取订单信…

前言:在上一节中我们实现了SpringCloud Stream消息驱动里的消费者,实现了消息的消费者后,在日常运行中我们可能会遇到重复消费的问题,比如在如下场景中,订单系统我们做集群部署,都会从RabbitMQ中获取订单信息,那如果一个订单同时被两个服务获取到,那么就会造成数据错误,我们得避免这种情况,这时我们就可以使用Stream中的消息分组来解决
 

1、再次创建一个消费者模块,命为cloud-stream-rabbitmq-consumer8803
(1)在父工程下新建模块

 (2)选择模块的项目类型为Maven并选择模块要使用的JDK版本

(3)填写子模块的名称,然后点完成即可完成创建

效果图:

(4)修改cloud-stream-rabbitmq-consumer8802子模块的pom.xml文件,然后reolad一下,下载依赖

例:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>springcloud01</artifactId><groupId>com.ken.springcloud</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>cloud-stream-rabbitmq-consumer8803</artifactId><dependencies><!--以下依赖都没写版本号,没写版本号的情况下会引用父项目的版本--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--监控--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--Eureka Clinet--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-stream-rabbit</artifactId></dependency><!--热部署--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><!--lombok插件--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies></project>
(5)为子模块添加名为application的yml配置文件

效果图: 

(6)修改application.yml文件配置(注:因为当前实现的是消费者,所以spring.cloud.stream.bindings下要写成input,表示当前是消费者)
server:port: 8803spring:application:name: cloud-stream-consumercloud:stream:#在此处配置要绑定的rabbitmq的服务信息binders:#表示定义的名称,用于于binding整合defaultRabbit:#消息组件类型,表示用到的组件是rabbittype: rabbit#设置rabbitmq的相关的环境配置environment:spring:rabbitmq:host: localhostport: 5672username: guestpassword: guest#服务的整合处理bindings:#这个名字是一个通道的名称input:#表示要使用的Exchange名称定义destination: studyExchange#设置消息类型,本次为json,文本则设置"text/plain"content-type: application/json#设置要绑定的消息服务的具体设置binder: defaultRabbiteureka:#客户端进行Eureka注册的配置client:service-url:defaultZone: http://localhost:7001/eurekainstance:#设置心跳的时间间隔(默认是30秒)lease-renewal-interval-in-seconds: 2#如果现在超过了5秒的间隔(默认是90秒)lease-expiration-duration-in-seconds: 5#在信息列表时显示主机名称instance-id: receive-8002.com#访问的路径变为IP地址prefer-ip-address: true
(7)为cloud-stream-rabbitmq-consumer8803子模块新建一个主启动类,类名输入com.ken.springcloud.StreamMQMain8803,然后创建即可

效果图:

(8)编写StreamMQMain8803主启动类
package com.ken.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class StreamMQMain8803 {public static void main(String[] args) {SpringApplication.run(StreamMQMain8803.class, args);}
}

2、在com.ken.springcloud包下新建一个名为controller的包

效果图:

3、在controller包下新建一个名为ReceiveMessageListencerController的控制类

效果图:

4、编写ReceiveMessageListencerController类
package com.ken.springcloud.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.annotation.StreamListener;
import org.springframework.cloud.stream.messaging.Sink;
import org.springframework.messaging.Message;
import org.springframework.stereotype.Component;@Component
@EnableBinding(Sink.class)
public class ReceiveMessageListencerController {@Value("${server.port}")private String serverPort;@StreamListener(Sink.INPUT)public void input(Message<String> message) {System.out.println("消费者1号--->接受到的消息:" + message.getPayload() + "\t port:" + serverPort);}}

5、分别启动eureka-server7001、RabbitMQ、cloud-stream-rabbitmq-provider8801、cloud-stream-rabbitmq-consumer8802、cloud-stream-rabbitmq-consumer8803
(1)分别启动eureka-server7001、cloud-stream-rabbitmq-provider8801、cloud-stream-rabbitmq-consumer8802、cloud-stream-rabbitmq-consumer8803

效果图:

 (2)启动RabbitMQ

效果图:

6、查看RabbitMQ是否正常运行

在浏览器输入http://localhost:15672/进入RabbitMQ的可视化界面,然后登录进去(默认账号密码guest/guest)

​​

效果图:

​​

7、在浏览器地址栏输入http://localhost:8801/sendMessage接口,然后按回车发起请求

效果图:

分别查看cloud-stream-rabbitmq-provider8801、cloud-stream-rabbitmq-consumer8802、cloud-stream-rabbitmq-consumer8803的控制台输出,发现8801生产者只发送了一条消息,但这条消息分别被8802和8803消费了,出现了我们在前言里说的重复消费问题

cloud-stream-rabbitmq-provider8801:

cloud-stream-rabbitmq-consumer8802:

cloud-stream-rabbitmq-consumer8803:

8、造成重复消费的原因

不同组是可以重复消费的,因为cloud-stream-rabbitmq-consumer8802和cloud-stream-rabbitmq-consumer8803是处于不同的组,所以可以重复消费

9、分别查看cloud-stream-rabbitmq-consumer8802和cloud-stream-rabbitmq-consumer8803所属的组是什么
(1)登录RabbitMQ Management页面,点进Exchange,然后点进studyExchange

(2)点进第一个队列

(3)可以看到这个队列所属的组是djyBMHL-QTyaDDmJp-TBvQ

(4)点进第一个队列
(5)可以看到这个队列所属的组是sC3WGnxXRFGQZ8V94jUQog

综上所示,cloud-stream-rabbitmq-consumer8802和cloud-stream-rabbitmq-consumer8803属于不同的组,所以可以重复消费

10、使用分组解决重复消费问题原理

在Stream中处于同一个group中的多个消费者是竞争关系把微服务应用放置于同一个group中,就能够保证消息只会被其中一个应用消费一次。不同的组是可以消费的,同一个组内会发生竞争关系,只有其中一个可以消费。

11、设置自定义配置分组
(1)修改cloud-stream-rabbitmq-consumer8802的applidation.yml配置文件,给cloud-stream-rabbitmq-consumer8802分配组名为KenA的组
server:port: 8802spring:application:name: cloud-stream-consumercloud:stream:#在此处配置要绑定的rabbitmq的服务信息binders:#表示定义的名称,用于于binding整合defaultRabbit:#消息组件类型,表示用到的组件是rabbittype: rabbit#设置rabbitmq的相关的环境配置environment:spring:rabbitmq:host: localhostport: 5672username: guestpassword: guest#服务的整合处理bindings:#这个名字是一个通道的名称input:#表示要使用的Exchange名称定义destination: studyExchange#设置消息类型,本次为json,文本则设置"text/plain"content-type: application/json#设置要绑定的消息服务的具体设置binder: defaultRabbit#分配给组名为kenA的组group: KenAeureka:#客户端进行Eureka注册的配置client:service-url:defaultZone: http://localhost:7001/eurekainstance:#设置心跳的时间间隔(默认是30秒)lease-renewal-interval-in-seconds: 2#如果现在超过了5秒的间隔(默认是90秒)lease-expiration-duration-in-seconds: 5#在信息列表时显示主机名称instance-id: receive-8802.com#访问的路径变为IP地址prefer-ip-address: true
(2)修改cloud-stream-rabbitmq-consumer8803的applidation.yml配置文件,给cloud-stream-rabbitmq-consumer8803分配组名为KenB的组
server:port: 8803spring:application:name: cloud-stream-consumercloud:stream:#在此处配置要绑定的rabbitmq的服务信息binders:#表示定义的名称,用于于binding整合defaultRabbit:#消息组件类型,表示用到的组件是rabbittype: rabbit#设置rabbitmq的相关的环境配置environment:spring:rabbitmq:host: localhostport: 5672username: guestpassword: guest#服务的整合处理bindings:#这个名字是一个通道的名称input:#表示要使用的Exchange名称定义destination: studyExchange#设置消息类型,本次为json,文本则设置"text/plain"content-type: application/json#设置要绑定的消息服务的具体设置binder: defaultRabbit#分配给组名为kenB的组group: KenBeureka:#客户端进行Eureka注册的配置client:service-url:defaultZone: http://localhost:7001/eurekainstance:#设置心跳的时间间隔(默认是30秒)lease-renewal-interval-in-seconds: 2#如果现在超过了5秒的间隔(默认是90秒)lease-expiration-duration-in-seconds: 5#在信息列表时显示主机名称instance-id: receive-8803.com#访问的路径变为IP地址prefer-ip-address: true
(3)重启cloud-stream-rabbitmq-consumer8802和cloud-stream-rabbitmq-consumer8803服务

效果图:

(4)重新点进Exchange,然后点进studyExchange

(5)可以看到cloud-stream-rabbitmq-consumer8802和cloud-stream-rabbitmq-consumer8803被分别分配到KenA组和KenB组,这说明我们成功设置自定义配置分组


 注:如果分组没生效可以尝试使用Maven的compile命令来重新编译项目,然后重启启动项目即可


12、使用自定义分组解决重复消费问题

在上述步骤11中我们演示了如何去设置自定义配置分组,而不同的组是可以重复消费的,同一个组内会发生竞争关系,只有其中一个可以消费,所以我们可以通过自定义分组把cloud-stream-rabbitmq-consumer8802和cloud-stream-rabbitmq-consumer8803共同分为KenA组,使其只有一个消费者能消费消息

(1)修改cloud-stream-rabbitmq-consumer8803的applidation.yml配置文件,给cloud-stream-rabbitmq-consumer8803分配组名为KenA的组(因为在上述步骤11中我们给8802设置了KenA组,所以这里只用修改8803的分组即可)
server:port: 8803spring:application:name: cloud-stream-consumercloud:stream:#在此处配置要绑定的rabbitmq的服务信息binders:#表示定义的名称,用于于binding整合defaultRabbit:#消息组件类型,表示用到的组件是rabbittype: rabbit#设置rabbitmq的相关的环境配置environment:spring:rabbitmq:host: localhostport: 5672username: guestpassword: guest#服务的整合处理bindings:#这个名字是一个通道的名称input:#表示要使用的Exchange名称定义destination: studyExchange#设置消息类型,本次为json,文本则设置"text/plain"content-type: application/json#设置要绑定的消息服务的具体设置binder: defaultRabbit#分配给组名为kenB的组group: KenAeureka:#客户端进行Eureka注册的配置client:service-url:defaultZone: http://localhost:7001/eurekainstance:#设置心跳的时间间隔(默认是30秒)lease-renewal-interval-in-seconds: 2#如果现在超过了5秒的间隔(默认是90秒)lease-expiration-duration-in-seconds: 5#在信息列表时显示主机名称instance-id: receive-8803.com#访问的路径变为IP地址prefer-ip-address: true
(2)重启cloud-stream-rabbitmq-consumer8803服务

效果图:

(3)在浏览器地址栏输入http://localhost:8801/sendMessage接口,然后按2次回车发起2次请求

效果图:

分别查看cloud-stream-rabbitmq-provider8801、cloud-stream-rabbitmq-consumer8802、cloud-stream-rabbitmq-consumer8803的控制台输出,发现8801生产者发送了2条消息的情况下,8802和8803分别消费了1条消息,一开始说到的重复消费问题不再出现

cloud-stream-rabbitmq-provider8801:

cloud-stream-rabbitmq-consumer8802:

cloud-stream-rabbitmq-consumer8803:


文章转载自:

http://ZlpLeI3s.hqmfn.cn
http://WPnLb90C.hqmfn.cn
http://yKHZajPM.hqmfn.cn
http://vx9W2nFZ.hqmfn.cn
http://MwnzDwJx.hqmfn.cn
http://MT8kS8AL.hqmfn.cn
http://DFGGSib9.hqmfn.cn
http://epq9LtON.hqmfn.cn
http://iK9RbCeo.hqmfn.cn
http://pbSbp3uT.hqmfn.cn
http://gt1WCuvb.hqmfn.cn
http://xspqEP7p.hqmfn.cn
http://Hqk1rSA5.hqmfn.cn
http://PJDGaLLQ.hqmfn.cn
http://MWFGhudf.hqmfn.cn
http://KqThktU6.hqmfn.cn
http://FsZZcZLf.hqmfn.cn
http://SELo3N7d.hqmfn.cn
http://KhIQ5eZu.hqmfn.cn
http://BpNRc5k2.hqmfn.cn
http://YVfmzAex.hqmfn.cn
http://XFN8u2kO.hqmfn.cn
http://7IoAIIrA.hqmfn.cn
http://yB5rt28f.hqmfn.cn
http://elHNQHNO.hqmfn.cn
http://tqJEKPyF.hqmfn.cn
http://tDgLXSir.hqmfn.cn
http://zM0yVmYO.hqmfn.cn
http://qHkMCQEa.hqmfn.cn
http://3EBQQrTH.hqmfn.cn
http://www.dtcms.com/wzjs/773907.html

相关文章:

  • 大学营销型网站建设实训课程怎样建设网站首页
  • 网站统计哪个好用最新手游2022首发排行
  • 网站建设技术教程苏州网络推广营销公司
  • 手机网站底部电话代码企业做网站分哪几种
  • 网络优化推广 网站开发建设wordpress再安装
  • 自助旅游网站开发分析报告内蒙古建设厅网站
  • 网站建设遇到的问题及对策wordpress创建滑块
  • 软件免费开发网站建设设置网站404
  • 金融培训网站源码百度小说排行榜完本
  • 中小企业网站建设应该注意什么学编程好找工作吗?
  • wordpress 企业站杭州网站改版公司电话
  • 公司网站建设会计分录海天网站建设
  • 南昌有限公司 网站家政行业网站建设方案
  • 建立能网上交易的网站多少钱天元建设集团有限公司基本情况
  • 太原做网站费用广西企业网站有哪些
  • 做信息采集的网站打开部分网站很慢
  • 手机资讯类网站模板个人网站备案后内容可以改么
  • 高水平大学建设大学网站网站不备案
  • 哪个平台做网站好免费好用wordpress主题
  • 泰州网站建设要多少钱wordpress 流量统计
  • 百度站长工具是什么意思网站建设 知识产权
  • 在线教育网站开发实例核工业华南建设集团网站
  • 保密和档案网站建设方案最新网游网络游戏手游
  • 如何做中英文网站创造与魔法官方网站一起做喜欢的事
  • 网站建设制作模板网站怎么做永康好口碑关键词优化
  • 大有网网站网站模板安装好后
  • 网站建设工作总结WordPress背景图片自适应
  • 网站域名自己做食品公司网站源码
  • 江苏中淮建设集团有限公司网站做网站分为竞价和优化
  • 网站被抄袭怎么投诉wordpress register_setting