如何在不消耗消息的情况下清除安慰队列?

我试着找到类似的问题,但找不到我的问题的最佳解决方案。我在应用程序中使用了spring boot,在代码中使用了集成的solace队列。我可以使用以下代码从solace队列中读取消息:

@Configuration
public class JmsConfig {
    @Bean
    public ConnectionFactory connectionFactory() {
        return new PoolingConnectionFactoryBean();
    }
}

在spring boot的帮助下,可以从属性文件中提取VPN等所有属性,并创建ConnectionFactory。下面是读取消息的代码:

@Configuration
public class QueueConfig {
    @Value("${destination.name}")
    private String destination;
    @Value("${destination.isPubSub:false}")
    private boolean pubSubDomain;
    @Value("${maxConsumers:1}")
    private int maxConsumers;
    @Value("${destination.autoStartup:true}")
    private boolean autoStartup;

    @Bean
    public IntegrationFlow queueFlow(ConnectionFactory jmsConnectionFactory, PlatformTransactionManager transactionManager) {
        return IntegrationFlows
                .from(Jms.messageDrivenChannelAdapter(jmsConnectionFactory).autoStartup(autoStartup)
                        .configureListenerContainer(
                                c -> c.transactionManager(transactionManager).pubSubDomain(pubSubDomain).maxConcurrentConsumers(maxConsumers))
                        .destination(destination))
                .transform(Transformers.fromJson(HashMap[].class)).log(LoggingHandler.Level.INFO, m -> MessageFormat
                        .format("Processing {0} {1} records...", ((Object[]) m.getPayload()).length, m.getHeaders().get("table")))
                .route(getTableRouter()).get();

    }

    private ExpressionEvaluatingRouter getTableRouter() {
        ExpressionEvaluatingRouter router = new ExpressionEvaluatingRouter("headers['table']");
        router.setResolutionRequired(false);
        router.setDefaultOutputChannel(new NullChannel());
        return router;
    }

根据消息的类型,定位服务执行器并处理该消息。它对我们来说工作得很好。

但是,在某些情况下,我们需要从队列中快速删除假脱机消息,而不使用它们。在我这里提到的当前设置中,有什么方法可以做到这一点吗?

我尝试通过队列浏览器,但那里没有这样的选项

转载请注明出处:http://www.kldfzc.com/article/20230526/2009977.html