如何在 Spring 集成中使用临时频道?

How to use temporary Channel in Spring Integration?

我是 Spring 集成的新手,我正在尝试从临时频道获取消息。

正在读取 documentation spring 使用了一个临时频道。 我猜它的名字是 NullChannel

我需要我的 gateway returns 来自临时通道的值。

http controller -> gateway -> direct channel -> activator 1 -> queue channel -> activator 2

所以我的 activator 2 会将新值放入临时通道,因此 gateway 将从临时通道检索值

@MessageEndpoint
public class Activator2 {
    
@Autowired
private NullChannel nullChannel;

@ServiceActivator(inputChannel = "asyncChannel")
public void plus(Integer message){
    try {
        message++;
        Thread.sleep(2000);
        nullChannel.send(MessageBuilder.withPayload(message).build());
        log.info("Activator 2: " +message );

    } catch (InterruptedException e) {
        log.error("I don't want to sleep");
    }
    
}
}

它不工作。我不确定是否一切都连接良好

NullChannel 类似于 Unix 中的 /dev/null;它只是丢弃值。

@ServiceActivator(inputChannel = "asyncChannel")
public Integer plus(Integer message){
    return message;
}

会自动执行您想要的操作。

如果没有outputChannel,框架将结果发送到replyChannel头。