在同步WireTap中使用Thread

时间:2015-03-14 03:11:46

标签: threadpool spring-integration weblogic12c

我的应用程序我们计划将Wire-tap作为Async调用,但是我们在SecurityContext中设置了一些登录信息,因此如果我们将Wire-tap作为Async,我们将丢失这些数据,因此我们计划使用Synch Channel for Wire -tap和我们记录时在Interceptor类中调用一个Thread来记录DB中的消息。

这种方法的影响可能是我们需要注意什么线程轮询限制,还是有替代解决方案呢?

我们正在使用weblogic 12c

1 个答案:

答案 0 :(得分:0)

看起来您应该注意SecurityContext propagationhttps://jira.spring.io/browse/INT-2166)。请仔细阅读所有这些评论。

您可以添加ChannelInterceptor wire-tap频道的SecurityContext,该单独的广告将获得interceptor

要获得全面的答案,我在这里添加class SecurityContextPropagationChannelInterceptor extends ChannelInterceptorAdapter { @Override Message<?> preSend(Message<?> message, MessageChannel channel) { if (!(channel in AbstractPollableChannel) || message.headers.securityContext || !SecurityContextHolder.context.authentication) return message return MessageBuilder.fromMessage(message).with { setHeader 'securityContext', SecurityContextHolder.context build() } } @Override Message<?> postReceive(Message<?> message, MessageChannel channel) { if (channel in AbstractPollableChannel && message.headers.securityContext) { SecurityContextHolder.context = message.headers.securityContext } return message } } 代码:

{{1}}