Spring DSL Solace集成:如何设置每次轮询的最大消息数

时间:2018-07-20 12:22:24

标签: spring spring-boot dsl solace-mq

我正在使用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条消息。

1 个答案:

答案 0 :(得分:0)

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

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