用于spring messaging xml config的等效Java Config

时间:2017-11-15 11:49:05

标签: java spring spring-batch spring-integration-amqp

我正在尝试使用rabbitMQ实现spring批量远程分块。我遵循这个link

这个

的等效java配置是什么
<int:channel id="requests"/>
<int:channel id="replies"/>

<int-jms:message-driven-channel-adapter id="jmsIn"
    destination-name="requests"
    channel="requests"/>

<int-jms:outbound-channel-adapter id="outgoingReplies"
    destination-name="replies"
    channel="replies">
</int-jms:outbound-channel-adapter>

1 个答案:

答案 0 :(得分:0)

对于INBOUND:

@Bean(AMQP_INPUT_CHANNEL)
public MessageChannel amqpInputChannel() {
    return new DirectChannel();
}

@Bean
public AmqpInboundChannelAdapter inbound(SimpleMessageListenerContainer listenerContainer,  
                                         @Qualifier(AMQP_INPUT_CHANNEL) MessageChannel channel,
                                         Jackson2JsonMessageConverter messageConverter) {
    AmqpInboundChannelAdapter adapter = new AmqpInboundChannelAdapter(listenerContainer);   
    adapter.setMessageConverter(messageConverter);      
    adapter.setOutputChannel(channel);
    return adapter;
}

@Bean
public SimpleMessageListenerContainer container(ConnectionFactory connectionFactory) {
    SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(connectionFactory);   
    container.setConcurrentConsumers(5);        
    container.setQueueNames("Queue_Name");          
    return container;
}

对于OUTBOUND:

@Bean
public MessageChannel amqpOutboundChannel() {
    return new DirectChannel();
}

@Bean
@ServiceActivator(inputChannel = "amqpOutboundChannel")
public AmqpOutboundEndpoint amqpOutbound(AmqpTemplate amqpTemplate) {
    AmqpOutboundEndpoint outbound = new AmqpOutboundEndpoint(amqpTemplate);
    outbound.setRoutingKey("ERROR-QUEUE");
    return outbound;
}

@MessagingGateway(defaultRequestChannel = "amqpOutboundChannel")
public interface BatchServiceMessagingGateway {
    void sendMessage(String data);
}