Добавьте 'application.errorChannel' для настройки в Spring Integration - PullRequest
0 голосов
/ 22 октября 2018

Я написал программу для чтения сообщений из очереди Solace.Я получаю сообщение об ошибке ниже.

Можете ли вы помочь?

enter image description here Код, указанный ниже:

МойОсновная конфигурация приведена ниже:

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: enter image description here

ОБНОВЛЕНИЕ: Мой основной класс:

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

1 Ответ

0 голосов
/ 22 октября 2018

Вы можете сделать что-то подобное в main() после создания ApplicationContext:

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

Итак, ваше приложение не собирается завершать работу, пока не поступит какой-либо ввод с консоли.

Также вы можете подождать, пока сообщения будут использованы, например, через QueueChannel.receive().Пример блокировки main, выполненный в примере Apache Kafka в Spring Integration Samples: https://github.com/spring-projects/spring-integration-samples/blob/master/basic/kafka/src/main/java/org/springframework/integration/samples/kafka/Application.java

...