Я пытался найти похожий вопрос, но не смог найти наилучшего возможного решения для моей проблемы. Я использую весеннюю загрузку в своем приложении и интегрировал очереди утешения в своем коде. Я могу читать сообщения из очередей утешения, используя следующий фрагмент кода:
@Configuration
public class JmsConfig {
@Bean
public ConnectionFactory connectionFactory() {
return new PoolingConnectionFactoryBean();
}
}
С помощью весенней загрузки все свойства, такие как 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;
}
В зависимости от типа сообщения, сервисный исполнительный механизм находится и сообщение обрабатывается. У нас это работает отлично.
Однако в некоторых ситуациях нам нужно быстро удалять буферные сообщения из очереди, не используя их. Есть ли способ, которым мы можем сделать это в текущей настройке, о которой я упоминал здесь.
Я пробовал через браузер очереди, но там нет такой опции