fix: remove _zh_CN suffix from messages basename, add graceful shutdown drain

- messages basename: drop _zh_CN suffix (Spring auto-appends locale),
  eliminating repeated ResourceBundle WARN during every request
- OrganizationServer: add @EventListener(ContextClosedEvent)
  with 30s drain delay to let in-flight requests complete
  before bean destruction begins
This commit is contained in:
hpd840321
2026-05-10 11:44:11 +08:00
parent f350f318f5
commit 3f1a23a15e
2 changed files with 19 additions and 3 deletions
@@ -43,8 +43,8 @@ spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true spring.http.encoding.enabled=true
spring.http.encoding.force=true spring.http.encoding.force=true
# --- i18nBOOT-INF 同名)--- # --- i18nBOOT-INF 同名。basename 勿带 _zh_CN 后缀,Spring 自动按 locale 追加---
spring.messages.basename=messages_zh_CN,component-account/messages_zh_CN,component-resource/messages_zh_CN,core-aggregate/messages_zh_CN,core-device/messages_zh_CN,devicesdk/messages_zh_CN,component-org/messages_zh_CN spring.messages.basename=messages,component-account/messages,component-resource/messages,core-aggregate/messages,core-device/messages,devicesdk/messages,component-org/messages
# --- 上传限制 --- # --- 上传限制 ---
cloudwalk.multipart.maxFileSize=50MB cloudwalk.multipart.maxFileSize=50MB
@@ -21,6 +21,9 @@ import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.EnableAspectJAutoProxy; import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.context.event.ContextClosedEvent;
import org.springframework.context.event.EventListener;
import org.springframework.core.annotation.Order;
import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.http.HttpMethod; import org.springframework.http.HttpMethod;
import org.springframework.http.client.ClientHttpRequestFactory; import org.springframework.http.client.ClientHttpRequestFactory;
@@ -63,7 +66,20 @@ implements WebApplicationInitializer {
protected HttpUriRequest createHttpUriRequest(HttpMethod httpMethod, URI uri) { protected HttpUriRequest createHttpUriRequest(HttpMethod httpMethod, URI uri) {
if (HttpMethod.DELETE == httpMethod) { if (HttpMethod.DELETE == httpMethod) {
return new VMSHttpEntityEnclosingRequestBase(uri); return new VMSHttpEntityEnclosingRequestBase(uri);
@EventListener
@Order(0)
public void onShutdown(ContextClosedEvent event) {
log.info("Graceful shutdown: draining in-flight requests ({}ms)...", SHUTDOWN_DRAIN_MS);
try {
Thread.sleep(SHUTDOWN_DRAIN_MS);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
} }
log.info("Graceful shutdown: drain complete");
}
private static final long SHUTDOWN_DRAIN_MS = 30_000L;
}
return super.createHttpUriRequest(httpMethod, uri); return super.createHttpUriRequest(httpMethod, uri);
} }
}); });