【问题标题】:JmsOutboundGateway - Java config missing options?JmsOutboundGateway - Java 配置缺少选项?
【发布时间】:2017-01-17 10:24:49
【问题描述】:

我目前正在将 Springs XML- 转换为 Java-Configuration。 (Spring 版本 4.3.4)我目前正在努力使用 Spring Integration。 JmsOutboundGateway 似乎不支持其 XML 对应项支持的所有选项:

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;
}

auto-startuprequest-channel 似乎“缺失”了。我只是在错误的地方寻找它们还是需要额外的步骤?我是不是误会了什么?

提前致谢!

【问题讨论】:

    标签: java spring spring-mvc spring-integration


    【解决方案1】:

    由 XML 解析器创建的所有消费端点获得 2 个 bean;消息处理程序和调用处理程序的消费者;消费者取决于输入通道的类型;这些属性在消费者身上。

    使用 Java 配置配置消费端点时,将 @ServiceActivator 添加到 @Bean 以生成消费者 bean(使用 inputChannel 作为请求通道)。

    更多信息请参见Programming Tips and Tricks

    【讨论】:

    • 感谢您的解释和指导。
    【解决方案2】:

    试试这个

       @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;
         }
    

    【讨论】:

    • 看来,你可以在codepart gateway.setReplyChannel(myResponseChannel());中设置replyChannel
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-25
    • 2019-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多