From 5484ae14de55f8e74b691124da0a04b211604dc4 Mon Sep 17 00:00:00 2001 From: Fanjc <271366833@qq.com> Date: Mon, 17 Jul 2023 08:01:08 +0000 Subject: [PATCH] fix messageModel=BROADCASTING Signed-off-by: Fanjc <271366833@qq.com> --- .../config/EnvEnvironmentPostProcessor.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/yudao-framework/yudao-spring-boot-starter-env/src/main/java/cn/iocoder/yudao/framework/env/config/EnvEnvironmentPostProcessor.java b/yudao-framework/yudao-spring-boot-starter-env/src/main/java/cn/iocoder/yudao/framework/env/config/EnvEnvironmentPostProcessor.java index 4c1cb44fe..c96ec1bad 100644 --- a/yudao-framework/yudao-spring-boot-starter-env/src/main/java/cn/iocoder/yudao/framework/env/config/EnvEnvironmentPostProcessor.java +++ b/yudao-framework/yudao-spring-boot-starter-env/src/main/java/cn/iocoder/yudao/framework/env/config/EnvEnvironmentPostProcessor.java @@ -28,6 +28,27 @@ public class EnvEnvironmentPostProcessor implements EnvironmentPostProcessor { @Override public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { + + + // 兼容RocketMQBus +// spring-cloud-starter-bus-rocketmq 2021.0.4.0中固定了springcloudbus的input名为springCloudBusInput +// 但是并没有设置为广播模式,导致bus总线依旧为集群消费 +// 解决方案 在defaultProperties中添加messageModel=BROADCASTING +// 参考https://github.com/alibaba/spring-cloud-alibaba/pull/2785 + MutablePropertySources propertySources = environment.getPropertySources(); + if (!propertySources.contains("defaultProperties")) { + Map map = new HashMap(); + map.put("spring.cloud.stream.rocketmq.bindings.springCloudBusInput.consumer.messageModel","BROADCASTING"); + MapPropertySource target = new MapPropertySource("defaultProperties", map); + propertySources.addLast(target); + }else{ + PropertySource source = propertySources.get("defaultProperties"); + if (source instanceof MapPropertySource) { + MapPropertySource target = (MapPropertySource)source; + target.getSource().put("spring.cloud.stream.rocketmq.bindings.springCloudBusInput.consumer.messageModel", "BROADCASTING"); + } + } + // 0. 设置 ${HOST_NAME} 兜底的环境变量 String hostNameKey = StrUtil.subBetween(HOST_NAME_VALUE, "{", "}"); if (!environment.containsProperty(hostNameKey)) {