You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@sling.apache.org by "Roll, Kevin" <Ke...@idexx.com> on 2015/11/24 23:18:15 UTC

Custom queue

I have implemented a job as described here:

https://sling.apache.org/documentation/bundles/apache-sling-eventing-and-job-handling.html

@Component(immediate = true)
@Service(value = JobConsumer.class)
@Property(name = JobConsumer.PROPERTY_TOPICS, value = ImageManagerUploadJob.JOB_TOPIC)
public final class ImageManagerUploadJob implements JobConsumer
{

I wish to have this Job handled by a custom queue that processes jobs sequentially, i.e. on a single thread. Forgive my densitude but I'm not understanding how/where to apply the properties given on that documentation page. It sounds like I define a queue and then associate the job with it? I haven't been able to find an example of this. I'd like this all to be in code so it always works without tinkering with stuff in the OSGi container. Thanks!


Re: Custom queue

Posted by Robert Munteanu <ro...@apache.org>.
On Thu, 2015-11-26 at 20:46 +0000, Roll, Kevin wrote:
> After a lot of documentation-reading, experimenting, and debugging, I
> got this to work. I can post the code if anyone else is interested in
> how to do this.

Sure, feel free to raise a documentation bug and add the code /
instructions in there.

Robert

> 
> 
> -----Original Message-----
> From: Steven Walters [mailto:steven.walters@icidigital.com] 
> Sent: Tuesday, November 24, 2015 5:51 PM
> To: users@sling.apache.org
> Subject: Re: Custom queue
> 
> On Tue, Nov 24, 2015 at 5:18 PM, Roll, Kevin <Ke...@idexx.com>
> wrote:
> > 
> > I have implemented a job as described here:
> > 
> > https://sling.apache.org/documentation/bundles/apache-sling-eventin
> > g-and-job-handling.html
> > 
> > @Component(immediate = true)
> > @Service(value = JobConsumer.class)
> > @Property(name = JobConsumer.PROPERTY_TOPICS, value =
> > ImageManagerUploadJob.JOB_TOPIC)
> > public final class ImageManagerUploadJob implements JobConsumer
> > {
> > 
> > I wish to have this Job handled by a custom queue that processes
> > jobs sequentially, i.e. on a single thread. Forgive my densitude
> > but I'm not understanding how/where to apply the properties given
> > on that documentation page. It sounds like I define a queue and
> > then associate the job with it? I haven't been able to find an
> > example of this. I'd like this all to be in code so it always works
> > without tinkering with stuff in the OSGi container. Thanks!
> > 
> 
> You need to create a new configuration from the factory-style
> configuration "Apache Sling Job Queue Configuration"
> (org.apache.sling.event.jobs.QueueConfiguration) to create a new
> queue
> that has the desired topic(s) associated to it to have your jobs be
> processed within that queue and its configuration parameters.
> 
> You could possibly have this configuration in "code" by either of
> 1) Accessing the org.osgi.service.cm.ConfigurationAdmin service and
> creating a configuration via this mechanism, such as in a
> BundleActivator .
> 2) Utilizing Sling's JCR Content Loader [1] and JCR Installer
> Provider
> [2] mechanisms to have a sling:OsgiConfig content node be
> automatically created & installed when the jar bundle starts.
> 
> There may be other possible routes depending on if other 3rd
> party/external plugins/frameworks are within your Sling instance.
> 
> [1] https://sling.apache.org/documentation/bundles/content-loading-jc
> r-contentloader.html
> [2] https://sling.apache.org/documentation/bundles/jcr-installer-prov
> ider.html
> 
> Regards,
> Steven


RE: Custom queue

Posted by "Roll, Kevin" <Ke...@idexx.com>.
After a lot of documentation-reading, experimenting, and debugging, I got this to work. I can post the code if anyone else is interested in how to do this.


-----Original Message-----
From: Steven Walters [mailto:steven.walters@icidigital.com] 
Sent: Tuesday, November 24, 2015 5:51 PM
To: users@sling.apache.org
Subject: Re: Custom queue

On Tue, Nov 24, 2015 at 5:18 PM, Roll, Kevin <Ke...@idexx.com> wrote:
>
> I have implemented a job as described here:
>
> https://sling.apache.org/documentation/bundles/apache-sling-eventing-and-job-handling.html
>
> @Component(immediate = true)
> @Service(value = JobConsumer.class)
> @Property(name = JobConsumer.PROPERTY_TOPICS, value = ImageManagerUploadJob.JOB_TOPIC)
> public final class ImageManagerUploadJob implements JobConsumer
> {
>
> I wish to have this Job handled by a custom queue that processes jobs sequentially, i.e. on a single thread. Forgive my densitude but I'm not understanding how/where to apply the properties given on that documentation page. It sounds like I define a queue and then associate the job with it? I haven't been able to find an example of this. I'd like this all to be in code so it always works without tinkering with stuff in the OSGi container. Thanks!
>

You need to create a new configuration from the factory-style
configuration "Apache Sling Job Queue Configuration"
(org.apache.sling.event.jobs.QueueConfiguration) to create a new queue
that has the desired topic(s) associated to it to have your jobs be
processed within that queue and its configuration parameters.

You could possibly have this configuration in "code" by either of
1) Accessing the org.osgi.service.cm.ConfigurationAdmin service and
creating a configuration via this mechanism, such as in a
BundleActivator .
2) Utilizing Sling's JCR Content Loader [1] and JCR Installer Provider
[2] mechanisms to have a sling:OsgiConfig content node be
automatically created & installed when the jar bundle starts.

There may be other possible routes depending on if other 3rd
party/external plugins/frameworks are within your Sling instance.

[1] https://sling.apache.org/documentation/bundles/content-loading-jcr-contentloader.html
[2] https://sling.apache.org/documentation/bundles/jcr-installer-provider.html

Regards,
Steven

Re: Custom queue

Posted by Steven Walters <st...@icidigital.com>.
On Tue, Nov 24, 2015 at 5:18 PM, Roll, Kevin <Ke...@idexx.com> wrote:
>
> I have implemented a job as described here:
>
> https://sling.apache.org/documentation/bundles/apache-sling-eventing-and-job-handling.html
>
> @Component(immediate = true)
> @Service(value = JobConsumer.class)
> @Property(name = JobConsumer.PROPERTY_TOPICS, value = ImageManagerUploadJob.JOB_TOPIC)
> public final class ImageManagerUploadJob implements JobConsumer
> {
>
> I wish to have this Job handled by a custom queue that processes jobs sequentially, i.e. on a single thread. Forgive my densitude but I'm not understanding how/where to apply the properties given on that documentation page. It sounds like I define a queue and then associate the job with it? I haven't been able to find an example of this. I'd like this all to be in code so it always works without tinkering with stuff in the OSGi container. Thanks!
>

You need to create a new configuration from the factory-style
configuration "Apache Sling Job Queue Configuration"
(org.apache.sling.event.jobs.QueueConfiguration) to create a new queue
that has the desired topic(s) associated to it to have your jobs be
processed within that queue and its configuration parameters.

You could possibly have this configuration in "code" by either of
1) Accessing the org.osgi.service.cm.ConfigurationAdmin service and
creating a configuration via this mechanism, such as in a
BundleActivator .
2) Utilizing Sling's JCR Content Loader [1] and JCR Installer Provider
[2] mechanisms to have a sling:OsgiConfig content node be
automatically created & installed when the jar bundle starts.

There may be other possible routes depending on if other 3rd
party/external plugins/frameworks are within your Sling instance.

[1] https://sling.apache.org/documentation/bundles/content-loading-jcr-contentloader.html
[2] https://sling.apache.org/documentation/bundles/jcr-installer-provider.html

Regards,
Steven