2017-01-17 3 views
0

Я в настоящее время перевод Springs XML- в Java-Configuration. (Spring Version 4.3.4) Я сейчас борется с интеграцией Spring. JmsOutboundGateway, кажется, не поддерживает все варианты, которые поддерживаются его XML аналог:JmsOutboundGateway - параметры конфигурации Java отсутствуют?

XML:

<int-jms:outbound-gateway 
    correlation-key="JMSCorrelationID" auto-startup="true" 
    connection-factory="connectionFactory" explicit-qos-enabled="true" 
    time-to-live="60000" request-channel="myRequestChannel" request-destination="outQueue" 
    requires-reply="true" reply-channel="myResponseChannel" reply-destination="inQueue" 
    receive-timeout="20000" > 
</int-jms:outbound-gateway> 

Перевод Java:

@Bean 
public JmsOutboundGateway myGateway(){ 
    JmsOutboundGateway gateway = new JmsOutboundGateway(); 
    gateway.setConnectionFactory(connectionFactory()); 
    gateway.setCorrelationKey("JMSCorrelationID"); 
    gateway.setReplyChannel(myResponseChannel()); 
    gateway.setReplyDestination(inQueue()); 
    gateway.setReceiveTimeout(20000); 
    gateway.setExplicitQosEnabled(true); 
    gateway.setRequiresReply(true); 
    gateway.setRequestDestination(outQueue()) 
    return gateway; 
} 

именно автоматического запуска и запрос канала кажется «пропавшим». Я просто ищу их в неправильном месте или необходимы дополнительные шаги? Я что-то неправильно понял?

Заранее благодарен!

ответ

1

Все потребляемые конечные точки, созданные парсером XML, получают 2 боба; обработчик messsage и потребитель, который вызывает обработчик; потребитель зависит от типа входного канала; эти атрибуты распространяются на потребителя.

При настройке конечных точек потребления с использованием конфигурации Java добавьте @ServiceActivator в @Bean, чтобы сгенерировать потребительский компонент (используйте для запроса канал inputChannel).

Для получения дополнительной информации см. Programming Tips and Tricks.

+0

Спасибо за пояснения и руководства. – NagelAufnKopp

0

Попробуйте это

@Bean 
    @ServiceActivator(inputChannel="requestChannel",outputChannel="replyChannel",autoStartup="true") 
    public JmsOutboundGateway jmsGateway(){ 
     JmsOutboundGateway gateway=new JmsOutboundGateway(); 
     gateway.setConnectionFactory(connectionFactory); 
     gateway.setRequestDestinationName("test.out"); 
     gateway.setReplyDestinationName("test.in"); 
     gateway.setCorrelationKey("JMSCorrelationID"); 
     return gateway; 
    } 
+0

Кажется, что вы можете установить answerChannel в codepart 'gateway.setReplyChannel (myResponseChannel());' – NagelAufnKopp

+0

да, вы можете это сделать –