Hi, the JobConsumerManager is not public api and therefore not available to other bundles. Looking at your example from the first post, it looks ok to me - it should work without a specific queue configuration as the main queue is always available. However your job consumer implementation shouldn't return null but a result.
Carsten 2013/10/25 Robert A. Decker <[email protected]> > I think I'm having a maven dependency problem, but I'm just not sure... > > Here's what my org.apache.sling.event bundle looks like: > > > > Here's how I declare the dependency: > <dependency> > <groupId>org.apache.sling</groupId> > <artifactId>org.apache.sling.event</artifactId> > <version>3.3.1-SNAPSHOT</version> > <scope>provided</scope> > </dependency> > > > > As an experiment/debugging, when I try to call the jobConsumerManager > service directly like: > > @Reference > private JobConsumerManager jobConsumerManager = null; > > LOGGER.debug("executor:" + > jobConsumerManager.getExecutor(DatastoreGCService.TOPIC_DATASTORE_GC_REQUESTED)); > LOGGER.debug("topics:" + jobConsumerManager.getTopics()); > > I get class not found errors: > > 25│Caused by: java.lang.ClassNotFoundException: > org.apache.sling.event.impl.jobs.JobConsumerManager not found by > astra-core [103] > │te > d │ at > org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1500) > ~[na:na].in > │ > 25│ at > org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:75) > ~[na:na].:1 > │ > 25│ at > org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1923) > ~[na:na].ch > │ > 25│ at java.lang.ClassLoader.loadClass(ClassLoader.java:357) > ~[na:1.7.0_40].: > │ > 25│ ... 34 common frames omitted... > > │ > 25│25.10.2013 00:27:11.102 *ERROR* [FelixFrameworkWiring] > astra-core [com.astracorp.engine.commons.schedulers.DatastorePeriodicGC] > Cannot register Component (java.lang.NoClassDefFoundError: org/ap│ > 25│ache/sling/event/impl/jobs/JobConsumerManager) > > │ > 25│java.lang.NoClassDefFoundError: > org/apache/sling/event/impl/jobs/JobConsumerManager > > │ > 25│ at java.lang.Class.getDeclaredMethods0(Native Method) > ~[na:1.7.0_40].cr > │ > 25│ at java.lang.Class.privateGetDeclaredMethods(Class.java:2521) > ~[na:1.7.0_40].ac > │ch > e.│ at java.lang.Class.getDeclaredMethods(Class.java:1845) > ~[na:1.7.0_40].nd > │ef > au│ at > org.apache.felix.scr.impl.helper.BindMethod.getServiceObjectAssignableMethod(BindMethod.java:389) > ~[org.apache.felix.scr-1.6.0.jar:na].Ba > │ > > > > I've tried changing the scope to compile, I've tried moving back version > numbers, and nothing seems to work. > > Any ideas? > > > Rob > > On Oct 24, 2013, at 7:09 PM, Robert A. Decker wrote: > > Hi, > > I'm trying to implement the new job system using a recent sling build. > org.apache.sling.event is at 3.3.1-SNAPSHOT. (updated this morning) > > What I'm doing is very similar to the example at the sling website. And I > can see my events being created under the /var/eventing/jobs/unassigned > node, so creating the events seems to be working, but my consumer just > isn't consuming them. > > Here's how I create them: > > jobManager.addJob(DatastoreGCService.TOPIC_DATASTORE_GC_REQUESTED, > DatastoreGCService.DATASTORE_GC_REQUESTED_JOB_PROPERTIES); > > TOPIC_DATASTORE_GC_REQUESTED = "com/astracorp/core/datastore/gc/requested"; > DATASTORE_GC_REQUESTED_JOB_PROPERTIES = new HashMap<String,Object>(); > > > Here's what my consumer looks like: > > @Component(enabled = true, immediate = true, metatype = true) > @Service(value = JobConsumer.class) > @Property(name = JobConsumer.PROPERTY_TOPICS, value = > {DatastoreGCService.TOPIC_DATASTORE_GC_REQUESTED}) > public class DatastoreGCHandler implements JobConsumer { > public static final Logger LOGGER = > LoggerFactory.getLogger(DatastoreGCHandler.class); > > @Override > public JobResult process(final Job job) { > LOGGER.debug("process job called"); > return null; > } > } > > > The consumer is listed in the services as: > [org.apache.sling.event.jobs.consumer.JobConsumer] > component.id 136 > component.name com.astracorp.engine.commons.handlers.DatastoreGCHandler > job.topics com/astracorp/core/datastore/gc/requested > Service PID com.astracorp.engine.commons.handlers.DatastoreGCHandler > > > > Everything looks fine to me but it's just not consuming. Am I missing > something? I notice that some components are not running, but I'm not sure > which is required. > > org.apache.sling.event.impl.jobs.deprecated.JobStatusProviderImpl : > registered > org.apache.sling.event.impl.jobs.tasks.HistoryCleanUpTask : registered > org.apache.sling.event.jobs.QueueConfiguration : unsatisfied (probably > needs a config) > > > Rob > > > > -- Carsten Ziegeler [email protected]
