2017-01-17 63 views
0

我目前正在將Springs XML-翻譯成Java-Configuration。 (春季版本4.3.4)我目前正在與Spring Integration拼搏。該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個bean;消息處理程序和調用處理程序的消費者;消費者依賴於輸入渠道的類型;這些屬性發送給消費者。

當使用Java配置配置使用端點時,將@ServiceActivator添加到@Bean以生成使用者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

看來,你可以在代碼中設置replyChannel'gateway.setReplyChannel(myResponseChannel());' – NagelAufnKopp

+0

是的,你可以做到這一點 –