Documentation (README.md) and JavaDoc has been updated. Hopefully that will
make it easier for everyone to follow, including myself in a few months
Best Regards

On 21 September 2016 at 11:08, Ian Boston <i...@tfd.co.uk> wrote:

> Hi,
> Its been a while since I have looked at this code, and I realise the
> JavaDoc on the API isn't quite as complete as it should be. The bundle was
> originally intended as an example of how to use the MoM API, but it does
> serve as a Job subsystem.
> Its probably best to talk about how a job is run first.
> A message goes onto a named queue that that the JobQueueConsumer consumes.
> That message updates the state of a job and takes it through its
> lifecycle. There may be many messages on the queue relating to each Job.
> (eg abort).
> The JobQueueConsumer will forward all messages it recognises as Job
> related to the JobSubsystem.
> The JobSubsystem will have multiple JobConsumers registered with it, each
> registration capable of executing a number of JobTypes.
> If a sequence of messages is dequeued to start a Job, the appropriate
> JobConsumer capable of executing that Job will execute that Job.
> Hierarchically the execution of jobs follows
> Queue -> JobQueueConsumer -> JobSubsystem -> JobConsumer
> To consume a job of a certain type on a certain queue, implement the
> JobConsumer API and give it a list of JobTypes that it can execute. Load
> that into an OSGi container with a JobQueueConsumer configured to consume a
> named queue.
> To queue jobs, do as you have done with the JobBuilder.
> The indirections are there to allow multiple queues to exist in the system
> each capable of routing messages to multiple job consumers, potentially via
> multiple routes.
> The Jobs API was an example of how to use the MoM API. I will try and
> improve the documentation to capture the above.
> Best Regards
> Ian
> On 21 September 2016 at 07:48, Chetan Mehrotra <chetan.mehro...@gmail.com>
> wrote:
>> I was looking at the Sling JMS based Job SLING-5645 and trying to
>> understand the api flow.
>> Sender side submits a job for a given queue and job type
>> ------
>> Job job = jobManager.newJobBuilder(Types.jobQueue(TOPIC),
>> Types.jobType(AsyncJobConsumer.JOB_TYPE)).addProperties(
>>                     ImmutableMap.of("jobtest", (Object) "jobtest")).add();
>> ------
>> While on consumer side we specify only job type
>> -------
>> @Component(immediate = true)
>> @Properties({
>>         @Property(name = JobConsumer.JOB_TYPES, cardinality =
>> Integer.MAX_VALUE, value = {
>>                 AsyncJobConsumer.JOB_TYPE
>>         })
>> })
>> @Service(value = JobConsumer.class)
>> public class AsyncJobConsumer implements JobConsumer
>> -------
>> So whats the purpose of queue name here?
>> Chetan Mehrotra

Reply via email to