java - 如何拦截Spring Cloud Stream消息?

标签 java spring-cloud spring-cloud-stream

Spring 允许拦截其许多产品的消息,例如 RestTemplate 和 SpringMVC。是否可以拦截 Spring Cloud Stream 消息?对于传入和传出消息。

最佳答案

能够使用 GlobalChannelInterceptor 注释和 ChannelInterceptor 接口(interface)拦截入站和出站 Spring Cloud Stream 消息。请参见下面的示例。

import org.springframework.integration.config.GlobalChannelInterceptor;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.support.ChannelInterceptor;
import org.springframework.stereotype.Component;

@Component
@GlobalChannelInterceptor
public class Interceptor implements ChannelInterceptor {

    private final Logger log = LoggerFactory.getLogger(Interceptor.class);

    @Override
    public Message<?> preSend(Message<?> msg, MessageChannel mc) {
        log.info("In preSend");
        return msg;
    }

    @Override
    public void postSend(Message<?> msg, MessageChannel mc, boolean bln) {
        log.info("In postSend");
    }

    @Override
    public void afterSendCompletion(Message<?> msg, MessageChannel mc, boolean bln, Exception excptn) {
        log.info("In afterSendCompletion");
    }

    @Override
    public boolean preReceive(MessageChannel mc) {
        log.info("In preReceive");
        return true;
    }

    @Override
    public Message<?> postReceive(Message<?> msg, MessageChannel mc) {
        log.info("In postReceive");
        return msg;
    }

    @Override
    public void afterReceiveCompletion(Message<?> msg, MessageChannel mc, Exception excptn) {
        log.info("In afterReceiveCompletion");
    }

}

关于java - 如何拦截Spring Cloud Stream消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37450293/

相关文章:

java - 调用 NewStringUTF() 时崩溃

java - JSON 只允许一个顶级值?

java - Spring Cloud : How to define default fallback for Hystrix in Zuul gateway?

spring-cloud-stream - StreamBridge 的替代方案

java - kafka 0.8.2.2有spring支持吗?

java - 使用 Java 8 构建 Gradle

spring - HystrixCommand 只适用于 Spring 服务或组件?

java - 根据查询参数动态更改 Zuul 中路由的 url

spring-cloud-stream - Spring Cloud 流 : consume from default Rabbit MQ exchange and specific queue

java - 如何访问java中对象的通用数组列表中的项目字段?