【发布时间】:2022-01-03 17:59:58
【问题描述】:
在我的代码中,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();
}
最后一个问题:如果我让两个服务激活器指向同一个可轮询通道,它会完美地工作吗?使用并行消息处理是否好?
【问题讨论】:
标签: java spring spring-integration spring-integration-aws