Автопроводное значение в классе ноль - PullRequest
0 голосов
/ 11 марта 2019

У меня есть два класса

   @Component
   public class EventProcessor {

    private static final Logger LOGGER = LoggerFactory.getLogger(EventProcessor.class);

    @Autowired
    private MyProperties myProperties;

    /**
     * Listens to the Event hub
     * 
     * @throws InterruptedException
     * @throws ExecutionException
     */
    public void startProcess() throws Exception {
        EventProcessorHost host = new EventProcessorHost(
                EventProcessorHost.createHostName(myProperties.getEventproperties().getHostNamePrefix(),
                myProperties.getEventproperties().getEventHubName(),
                myProperties.getEventproperties().getConsumerGroupName(),
                myProperties.getEventproperties().getEventHubConnectionString(),
                myProperties.getEventproperties().getStorageConnectionString(),
                myProperties.getEventproperties().getStorageContainerName());
        EventProcessorOptions options = new EventProcessorOptions();
        host.registerEventProcessor(AzureEventHubReceiver.class, options).get();

    }

}

и

    @Component
    public class AzureEventHubReceiver implements IAzureEventHubReceiver {

    private static final Logger LOGGER = LoggerFactory.getLogger(AzureEventHubReceiver.class);

    private int checkpointBatchingCount = 0;


    @Autowired
    private IDeployStatusService deployStatusService;


    @Override
    public void onOpen(PartitionContext context) throws Exception {

    }

    @Override
    public void onClose(PartitionContext context, CloseReason reason) throws Exception {

    }

    @Override
    public void onError(PartitionContext context, Throwable error) {

    }

    /* 
     * 
     */
    @Override
    public void onEvents(PartitionContext context, Iterable<EventData> events)
            throws InterruptedException, ExecutionException, JsonParseException, JsonMappingException, IOException {
        for (EventData data : events) {
            // Gson gson = new GsonBuilder().create();
            ObjectMapper objectMapper = new ObjectMapper();
            // EventHubModel model = null;

            EventHubModel[] model = objectMapper.readValue(new String(data.getBytes(), "UTF8"), EventHubModel[].class);
            if(model!=null && deployStatusService!=null) {
            deployStatusService.saveOrUpdateToDb(model[0].getData().getCorrelationId(), model[0].getData().getStatus());
            } 
            this.checkpointBatchingCount++;
            if ((checkpointBatchingCount % 5) == 0) {
                context.checkpoint(data).get();
            }
        }

}}

Класс обработчика событий загружается при запуске Springboot с помощью commandLineRunner

    @Component
    public class EventProcessorRunner implements CommandLineRunner{
    @Autowired
    private  EventProcessor processor; 

    EventProcessorRunner(final EventProcessor processor) {
       this.processor = processor;
    }

    @Override
    public void run(String... args) throws Exception {
        processor.startProcess();

    }

}

Интерфейс IDeployStatusкак показано ниже

    public interface IDeployStatusService {

    void saveCorrelationId(String correlationId,Long serviceId, Long userSubscriptionId, ProvisioningState provisioningState);

    void saveOrUpdateToDb(String correlationId, String status);
}

, а реализация -

 @Service
   public class DeployStatusService implements IDeployStatusService {

    private static final Logger LOGGER = LoggerFactory.getLogger(DeployStatusService.class);

    @Autowired
    IServiceConverter serviceConverter;

    @Autowired
    ServiceRepo serviceRepo;

    @Autowired
    IDeployConverter deployConverter;

    @Autowired
    ISubConverter subConverter;

    @Autowired
    SubRepository subRepo;

    @Autowired
    ServiceDeployRepository serviceDeployRepository;

    @Override
    public void saveCorrelationId(String correlationId, Long serviceId, Long userSubscriptionId,
            ProvisioningState provisioningState) {

    }

Однако IDeployStatusService не инициализируется и всегда возвращает ноль, даже когда событие инициируется из API и элемент управления достигает здесь.Идея относительно того, что можно сделать?Я попытался выполнить внедрение в конструктор здесь на deployStatusService, но безрезультатно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...