update(REQ-2516) - 克制 Starter 中的日志打印,配合 logback 配置按需进行输出

This commit is contained in:
wangli 2024-06-14 14:45:38 +08:00
parent 844990df3f
commit 75bfe60884
7 changed files with 52 additions and 13 deletions

View File

@ -69,8 +69,10 @@ public class StarterBroadcastMQConfiguration {
Consumer<EventConsumer.EventWrapper> callback = eventWrapper -> {
if (eventWrapper.isHandled()) {
// 只收集被App真正消费的消息.
if (log.isDebugEnabled()) {
Event event = eventWrapper.getEvent();
log.info("WorkflowEngine Broadcast MQ, handled event: {}", event.toPrettyJsonString());
log.debug("WorkflowEngine Broadcast MQ, handled event: {}", event.toPrettyJsonString());
}
}
};
return new DefaultEventConsumer(applicationName, eventHandlerRepository, callback);

View File

@ -33,6 +33,16 @@ public class WorkflowEngineStarterProperties {
*/
private Boolean joinContainerGroup = false;
/**
* <h3>该参数只针对<strong color=orange></strong>容器环境生效</h3>
* 配合 joinContainerGroup 使用且只在 joinContainerGroup = false 时生效
* <pre>
* 在本地有多台开发机同时启动时又会组成新的集群消费也会导致消息异常消费
* 所以该参数就是为了创建完全唯一的消费者避免本地开发机组成集群
* </pre>
*/
private String specialId;
/**
* WorkflowCoreService 类中所有方法未标记{@link InvokeMode}注解的方法调用时, 默认采用的模式
*
@ -68,6 +78,14 @@ public class WorkflowEngineStarterProperties {
this.joinContainerGroup = joinContainerGroup;
}
public String getSpecialId() {
return specialId;
}
public void setSpecialId(String specialId) {
this.specialId = specialId;
}
public RpcInvokeModeEnum getInvokeMode() {
return invokeMode;
}

View File

@ -32,6 +32,7 @@ public class NonContainerEnvironmentCondition implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
ConfigurableEnvironment environment = (ConfigurableEnvironment) context.getEnvironment();
// 依赖 K8S 设置的环境变量信息如果变量的 key 发生变化会导致此处的功能可能出现异常
String myPodNamespace = environment.getProperty(K8S_POD_NAME_SPACE);
String activeProfile = environment.getProperty(NACOS_PROFILES_ACTIVE);
if (!StringUtils.hasText(activeProfile)) {
@ -49,10 +50,14 @@ public class NonContainerEnvironmentCondition implements Condition {
// 获取默认值
joinContainerGroup = new WorkflowEngineStarterProperties().getJoinContainerGroup();
}
if (log.isDebugEnabled()) {
log.debug("workflow engine starter join-container-group status: {} ", joinContainerGroup);
}
String specialId = environment.getProperty("workflow.engine.starter.special-id", String.class);
environment.getSystemProperties().put(MQ_GID_NAME_SEGMENT,
joinContainerGroup ? activeProfile : activeProfile + DEBUGGING_MQ_SUFFIX);
joinContainerGroup ? activeProfile :
activeProfile + (StringUtils.hasText(specialId) ? "_" + specialId : "") + DEBUGGING_MQ_SUFFIX);
return true;
}

View File

@ -16,13 +16,19 @@ public final class LogInterceptor extends AbstractListenerInterceptor {
public <T> void execute(ListenerExecutor executor, Consumer<T> consumer, EventConsumer.Context context, T t) {
StopWatch stopWatch = new StopWatch();
stopWatch.start();
if (log.isDebugEnabled()) {
log.debug("--- starting handle mq ---- ");
}
if (log.isInfoEnabled()) {
log.info("messageId: {}, eventCode: {}, messageBody: {}", context.getMsgId(), context.getEventCode().toString(), JSON.toJSONString(t));
}
try {
getNext().execute(executor, consumer, context, t);
} finally {
stopWatch.stop();
if (log.isDebugEnabled()) {
log.debug("--- messageId: {} finished ,timeCost:{} ms ---", executor.getClass().getSimpleName(), stopWatch.getTotalTimeMillis());
}
}
}
}

View File

@ -35,7 +35,7 @@ public class WorkflowEngineBroadcastEventListener implements EventHandler, Initi
@Override
public void onEvent(Event event, EventConsumer.Context context) {
if (Objects.isNull(event) || Objects.isNull(event.getEventCode())) {
log.warn("illegal event code: {}", event);
log.warn("illegal event code: {}", JSON.toJSONString(event));
return;
}

View File

@ -128,9 +128,13 @@ public class WorkflowEngineStarterRetryEventListener implements EventHandler, In
// 事件处理 RPC 请求, 强制使用同步模式
ThreadUtil.set(SYNC);
Object[] args = convertToActualArgs(mapping.getMethod(), dto.getParameters());
if (log.isDebugEnabled()) {
log.debug("event rpc request args: {}", JSON.toJSONString(args));
}
Object invoke = mapping.getMethod().invoke(mapping.getInterfaceObject(), args);
if (log.isDebugEnabled()) {
log.debug("Event Invoke Result: {}", JSON.toJSONString(invoke));
}
} catch (Throwable e) {
// 能抛出异常目前只有两种情况, 一个是网络异常, 另一个是对端服务内部异常
Throwable cause = getRealCause(e);

View File

@ -49,7 +49,9 @@ public class RpcInvokeEventProducer extends RocketMQEventProducer {
@Override
public void send(@NonNull Event event, @NonNull Context context) {
log.info("发送事件内容: {}", event.toPrettyJsonString());
if (log.isDebugEnabled()) {
log.debug("发送事件内容: {}", event.toPrettyJsonString());
}
if (sendBeforeCallback != null) {
sendBeforeCallback.accept(event, context);
}
@ -101,8 +103,10 @@ public class RpcInvokeEventProducer extends RocketMQEventProducer {
getAfterCommitExecutor().executeAndRollback(runnable, rollbackRunnable);
}
if (log.isDebugEnabled()) {
List<Runnable> runnables = ListUtils.emptyIfNull(getAfterCommitExecutor().getRunnables());
log.info("runnables.size(): {}", runnables.size());
log.debug("runnables.size(): {}", runnables.size());
}
}
@Override