Untitled

 avatar
unknown
plain_text
a year ago
3.2 kB
5
Indexable
    @Override
    public void initImportQueuesProcess() {

        log.info("[ImportQueuesServiceImpl::initImportQueuesProcess] BEGIN");

        // recupero api di artemis richiamando service Jolokia
        Map<String, ? extends QueueMetrics> metricsMapApiArtemis = queueMetricsService.getMetricsViaJolokia(null);

        boolean hasAppAll = true;

        // conteggio totale code importate 
        int queueImportedCount = 0;

        // recupero solo le code topics che rispettano sintassi inps
        metricsMapApiArtemis.values().removeIf(qm -> {
            QueueName qn;
            try {
                qn = new QueueName(qm.getName());
                log.info("queue name : {}", qn);
            } catch (QueueNameSyntaxException e) {
                // segnalo errore ma non bloccante per l'import
                log.error("Queue che non rispetta sintassi : {}", qm.getName(), e);
                return true;
            }
            return !hasAppAll;
        });

        // Creo lista delle code importabili
        List<ImportableQueueDto> allImportableQueues = metricsMapApiArtemis.values()
                .stream()
                .map((QueueMetrics mq) -> ImportableQueueDto.builder()
                        .id(mq.getName())
                        .address(mq.getAddress())
                        .messageCount(mq.getTotalMessageCount())
                        .consumerCount(mq.getConsumerCount())
                        .threshold(mq.getName().endsWith(QueueName.ERROR_SUFFIX) ? 0 : 1000)
                        .monitored(true)
                        .selectedRow(true)
                        .build())
                .collect(Collectors.toList());

        // ciclo ogni oggetto in allImportableQueues per creare un dto di Queue
        // e passarlo a queueService per salvarli tutti su db se non presenti
        for (ImportableQueueDto importableQueueDto : allImportableQueues) {

            // verifico che la coda non sia già presente su db
            if (!queueService.findById(importableQueueDto.getId()).isPresent()) {

                log.info("coda non presente da importare {}", importableQueueDto.getId());

                // creo oggetto Queue da trasmettere a queueService per importare ogni singola
                // coda e salvarla sul db qms
                Queue queueModel = new Queue();
                queueModel.setId(importableQueueDto.getId());
                queueModel.setAddress(importableQueueDto.getAddress());
                queueModel.setMonitored(importableQueueDto.isMonitored());
                queueModel.setThreshold(importableQueueDto.getThreshold());
                log.info("queue dto : {}", queueModel.toString());

                queueService.ensureApplicationAsset(queueModel);
                queueService.save(queueModel);
                queueImportedCount++;
            } else {
                log.info("coda già presente : {}", importableQueueDto.getId());
            }
        }
        log.info("totale code importate : {}", queueImportedCount);
        log.info("[ImportQueuesServiceImpl::initImportQueuesProcess] END");
    }

}
Editor is loading...
Leave a Comment