0

我正在使用 spring、dsl、solace 与 spring boot 的集成。我的一个订阅者的应用程序每秒能够轮询大约 80 条消息,而 4 个订阅者每秒能够轮询大约 125 条消息。我想每秒处理至少 500 条消息。我的 JMS 流程如下所述-

    public @Bean IntegrationFlow defaultJmsFlow()
{
    return IntegrationFlows.from(

            //read JMS topic
            Jms.messageDrivenChannelAdapter(this.connectionFactory).destination(this.config.getInputQueueName()).errorChannel(errorChannel()).configureListenerContainer(c ->
            {
                final DefaultMessageListenerContainer container = c.get();
                container.setSessionTransacted(true);
                container.setMaxConcurrentConsumers(10);
                container.setConcurrentConsumers(4);
            }).get())

            .channel(messageProcessingChannel()).get();
}

阅读消息后,我将这些消息发送到 DirectChannel。需要进行任何特殊配置以提高我的应用程序的性能,以便每秒处理至少 500 条消息。

4

1 回答 1

0

强烈建议在将 Spring JMS 与 Solace 集成时缓存消费者。这样,连接保持持久,消息将快速传递给消费者,而无需解除绑定、断开连接和重新连接的开销。这可以使用 container.setCacheLevel(3) 在 DefaultMessageListenerContainer 中设置。

如果您使用并发消费者从同一个 Solace 队列中读取消息,请确保 Solace 队列是非排他的。独占队列将消息传递给一个活跃的消费者,非独占队列将循环传递消息给所有消费者。

于 2018-08-07T18:22:49.130 回答