我正在使用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条消息。
答案 0 :(得分:0)
强烈建议在将Spring JMS与Solace集成时缓存使用者。这样,连接保持持久,并且消息将快速传递给使用者,而不会产生解除绑定,断开连接和重新连接的开销。可以在defaultMessageListenerContainer中使用container.setCacheLevel(3)进行设置。
如果您正在使用并发使用者从同一Solace队列中读取消息,请确保Solace队列是非独占的。排他队列将消息传递给一个活动的使用者,而非排他队列将消息循环传递给所有使用者。