если я не хочу использовать dsl для написания кода, который создает соединение между jms и пружинным каналом интеграции, как это происходит - PullRequest
0 голосов
/ 13 февраля 2019

В этой ссылке автор использует язык, специфичный для домена java, для создания соединения между каналом интеграции Spring и activeMQ.Если я не хочу использовать Java DSL, и я просто хочу использовать общий метод Java.как мне быть?

@Bean
public IntegrationFlow outboundFlow(ActiveMQConnectionFactory connectionFactory) {
    return IntegrationFlows
            .from(requests())
            .handle(Jms.outboundAdapter(connectionFactory).destination("requests"))
            .get();
}

https://github.com/spring-projects/spring-batch/blob/master/spring-batch-samples/src/main/java/org/springframework/batch/sample/remotepartitioning/aggregating/WorkerConfiguration.java

1 Ответ

0 голосов
/ 13 февраля 2019

Jms.outboundAdapter(connectionFactory) - это синтаксическая оболочка сахара вокруг JmsSendingMessageHandler.

.handle() является эквивалентом @ServiceActivator.

Итак, что вам нужно с простой Java, это так:

@Bean
@ServiceActivator(inputChannel="requests")
public MessageHandler jmsMessageHandler((ActiveMQConnectionFactory connectionFactory) {
   JmsSendingMessageHandler handler = new JmsSendingMessageHandler(new JmsTemplate(connectionFactory));
   handler.setDestinationName("requests");
   return handler;
}

См. Некоторые пояснения вДокументы: https://docs.spring.io/spring-integration/docs/current/reference/html/overview.html#programming-tips

И еще о JmsSendingMessageHandler: https://docs.spring.io/spring-integration/docs/current/reference/html/jms.html#jms-outbound-channel-adapter

...