在 Spring 集成中添加 'application.errorChannel' 到配置

Add 'application.errorChannel' to config in Spring Integration

我编写了一个程序来从 Solace 队列中读取消息。我收到以下错误。

你能帮忙吗?

代码如下:

我的主要配置如下:

public class ReadFromQueueConfig {

    @Autowired
    private PrintMessageFromQueue printMessageFromQueue;

    String queueName = "MY.SAMPLE.SOLACE.QUEUE";

    @Bean
    public CachingConnectionFactory jmsConnectionFactory() {
        CachingConnectionFactory ccf = new CachingConnectionFactory();
        try {
            SolConnectionFactory scf = SolJmsUtility.createConnectionFactory();
            scf.setHost("host");
            scf.setUsername("username");
            scf.setVPN("vpm");
            scf.setPassword("password");
            scf.setDirectTransport(false);

            ccf.setTargetConnectionFactory(scf);

        } catch (Exception e) {
            logger.debug(e.getMessage());
        }
        return ccf;
    }

    @Bean
    public IntegrationFlow handleJsmInput() {
        return IntegrationFlows
                .from(Jms.inboundAdapter(jmsConnectionFactory()).destination(queueName))
                        .handle(printMessageFromQueue)
                        .get();
    }
}

PrintMessageFromQueue.java:

更新: 我的主要 class:

@SpringBootApplication
@EnableIntegration
@IntegrationComponentScan
public class TestReadFromQueueApplication {
    public static void main(String[] args) {
        SpringApplication.run(TestReadFromQueueApplication.class, args);
    }
}

创建 ApplicationContext 后,您可以在 main() 中执行类似的操作:

final Scanner scanner = new Scanner(System.in);
context.close();

因此,您的应用程序不会退出,直到来自控制台的一些输入。

您也可以等待消息被消费,例如通过 QueueChannel.receive()。 在 Spring 集成示例中的 Apache Kafka 示例中完成了一些阻止 main 的示例:https://github.com/spring-projects/spring-integration-samples/blob/master/basic/kafka/src/main/java/org/springframework/integration/samples/kafka/Application.java