Как создать JobConsumer в Sling?

Согласно официальному сайту Apache Sling (https://sling.apache.org/documentation/bundles/apache-sling-eventing-and-job-handling.html#job-consumers), так можно написать JobConsumer.

import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.event.jobs.Job;
import org.apache.sling.event.jobs.consumer.JobConsumer;

@Component
@Service(value={JobConsumer.class})
@Property(name=JobConsumer.PROPERTY_TOPICS, value="my/special/jobtopic",)
public class MyJobConsumer implements JobConsumer {

    public JobResult process(final Job job) {
        // process the job and return the result
        return JobResult.OK;
    }
}

Однако @Service и @Property являются устаревшими аннотациями. Я хочу знать, как правильно создать JobConsumer. Кто-нибудь знает, как написать код, эквивалентный приведенному выше?


person watopin    schedule 10.03.2021    source источник


Ответы (1)


Аннотации scr устарели в AEM, и в дальнейшем рекомендуется использовать официальные аннотации OSGi Declarative Services. Существует семинар Adobe при использовании аннотаций OSGi R7.

Новый способ написать то же самое будет

import org.osgi.service.component.annotations.Component;
import org.apache.sling.event.jobs.Job;
import org.apache.sling.event.jobs.consumer.JobConsumer;

@Component(
    immediate = true,
    service = JobConsumer.class,
    property = {
        JobConsumer.PROPERTY_TOPICS +"=my/special/jobtopic"
    }
)
public class MyJobConsumer implements JobConsumer {

    public JobResult process(final Job job) {
        // process the job and return the result
        return JobResult.OK;
    }
}
person rakhi4110    schedule 10.03.2021