我正在尝试使用Amqp.InboundAdapter从RabbitMQ队列中读取数据,对其进行处理,然后将其推入另一个队列。
所以流程如下:
Amqp.InboundAdapter->服务激活器-> Amqp.outboundAdapter
但是问题是处理速度非常非常慢。 Rabbitmq控制台的传输速率为0.2 /秒或1秒,这非常慢。
是什么原因导致这种缓慢?
IntegrationFlows.from(
Amqp.inboundAdapter(connectionFactory, IncomingQueue)
.configureContainer(c -> {
c.concurrentConsumers(classicFlatFileConcurrentConsumers);
c.prefetchCount(incomingPrefetchCount);
c.adviceChain(new Advice[]{retryOperationsInterceptor});
c.channelTransacted(false);
})
)
.handle(myTransformer)
.split()
.filter(ResultDTO.class, dto -> dto.getID() != null)
.handle(Amqp.outboundAdapter(rabbitTemplate).routingKey(OutputQueueName))
.get();
请注意,我正在Amqp.OutboundAdapter中使用RabbitTemplate,其usePublisherConnection设置为True。
当我不使用spring集成时,rabbitmq控制台中的消息速率大约为1000 msg / sec。