繁体   English   中英

Spring 集成:如何通过服务激活器作为并行服务使多线程从可轮询通道轮询消息

[英]Spring integration: how to make multi thread to poll message from a pollable channel through service activator as a paraller service

在我的代码中,SqsMessageDrivenChannelAdapter 通道适配器配置为从 AWS 队列读取消息并推送到可轮询通道(队列)。 对于可轮询通道,服务激活器指向轮询消息和进程。

我的确切问题:如何使工作服务激活器成为多线程以从可轮询通道轮询消息并按指定的线程大小执行一些并行任务。

通道适配器:

@Bean
  public MessageProducer sqsMessageDrivenChannelAdapterForFlights() {
    log.info("**** start listening to: " + ttFlightsXMLSqsName + " **** ");
    SqsMessageDrivenChannelAdapter adapter =
        new SqsMessageDrivenChannelAdapter(amazonSqs, ttFlightsXMLSqsName);
    adapter.setOutputChannelName(MessageChannelConstants.get_tt_flights);
    adapter.setMaxNumberOfMessages(5);
    return adapter;
  }

可轮询频道:

@Bean(name = MessageChannelConstants.get_tt_flights)
  public PollableChannel sqsInputChannelFlights() {
    return new QueueChannel();
  }

服务激活器:

  @ServiceActivator(inputChannel = MessageChannelConstants.get_tt_flights,
      poller = @Poller(fixedRate = "5000"))
  public void processFlightData(Message<?> receive) throws PacPlusException {
    .................
   long startTime = System.currentTimeMillis();
}

最后一个问题:如果我让两个服务激活器指向同一个可轮询通道,它会完美地工作吗?使用并行消息过程是否很好?

请参阅轮询器配置的task-executor器选项。 正是这个使相同的服务激活器被并行调用。 在文档中查看更多信息: https://docs.spring.io/spring-integration/docs/current/reference/html/endpoint.html#endpoint-namespace

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM