gpt4 book ai didi

java - Spring 集成 MessageDeliveryException

转载 作者:行者123 更新时间:2023-11-30 02:19:36 24 4
gpt4 key购买 nike

我正在尝试测试我的 Spring Integration 设置,但收到了

"MessageDeliveryException: Dispatcher has no subscribers for channel".

我正在使用 QueueChannel,我认为它不需要处理程序(从我在文档中看到的内容)。

我正在使用Spring Integration Java DSL以编程方式定义集成流程,而不是使用上下文。

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.integration.channel.QueueChannel;
import org.springframework.integration.dsl.IntegrationFlows;
import org.springframework.integration.dsl.channel.MessageChannels;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
public class SimplifiedIntegrationTest {
@Test
public void simpleTest() {
MessageChannel inputChannel = MessageChannels.direct().get();
QueueChannel outputChannel = MessageChannels.queue().get();
IntegrationFlows.from(inputChannel).channel(outputChannel).get();

inputChannel.send(MessageBuilder.withPayload("payload").build());

Message<?> outMessage = outputChannel.receive(0);
Assert.notNull(outMessage);
}
}

最佳答案

IntegrationFlow 必须始终在上下文中注册为 bean。我不确定是什么原因让您有不同的想法,但由于您没有将其注册为上下文中的 bean,因此特定的 BeanPostProcessor 没有完成流程配置魔法。这就是为什么您会收到“调度程序没有 channel 订阅者”错误的原因。

如果您手动注册集成流,请参阅IntegrationFlowContext:https://docs.spring.io/spring-integration/docs/5.0.0.BUILD-SNAPSHOT/reference/html/java-dsl.html#java-dsl-runtime-flows .

该文档适用于 Spring Integration 5.0,但 IntegrationFlowContext 在 Java DSL 1.2.x 中的行为方式相同。

关于java - Spring 集成 MessageDeliveryException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47243175/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com