故障现象: 重复消费:当两个端口号同时收到了 ,也就是一个订单同时被两个服务获取到,那么就会造成数据错误。
在生产实际中一定要避免重复消费这个环节,而解决此现象可以采用分组或者持久化方法
在Stream中处于同一个group中的多个消费者是竞争关系,就能保证消息只会被其中一个应用消费一次。而不同组是可以全面消费的(重复消费),同一组内会发生竞争关系,只有其中一个可以消费。
重复消费的导致原因:默认分组 group是不同的,组流水号不一样,被认为不同组,可以消费
解决方法: 自定义配置分组
自定义配置分为同一个组,解决重复消费
(但分组后仍然有队列的历史记录,这样消息可能会导致堆积,队列应该要做成非持久队列,而rabbit的路由没有配,所以不同队列的广播,同队列的会轮询)
持久化
也就是autoDelete为false,为指定的会消息丢失,指定的重启后会继续接收