Solved

Batch Queue Processes, More than 1 per?

  • 8 July 2021
  • 4 replies
  • 449 views

Userlevel 5
Badge +10

Hi All

I think since time began (versions 2003, 7.5 and now 9) we have had a single process for all Batch Queues except for the Fast Queue, which has two!

I believe I have seen the Deliver function lock itself a few times, as in the fast queue two Deliver transactions can run at the same time. I feel this queue should only have 1 process, if any jobs within have the potential to lock, when running at the same time?

Does anyone out there have a Batch Queue with more than one process? if so, what functions do you have in that Queue?

Also, we have two Touch Apps queues, but do not currently use touch apps. Has anyone removed/deactivated these? I assume as it is not running it wont hold a process? or perhaps it does?

Any advice or just your experience of Batch Queue would be appreciated. I have seen other results on here regarding how many processes set in Oracle etc… that is not a concern for us.

Thanks

Mike

icon

Best answer by Ragaventhan Sathananda 9 July 2021, 12:51

View original

This topic has been closed for comments

4 replies

Userlevel 5
Badge +10

Would also be great to know what others have their parameter job_queue_processes set to in the production environment?

Userlevel 7
Badge +15

Hi @MikeArbon,

We usually increase the number of processes for the batch queue which has jobs which could be run in parallel because some of the jobs should run sequentially to maintain the work flow. So it depends on the jobs under the batch queue whether it can run sequentially or parallelly, depending on that you may decide the number of processes assigned to the batch queue. 

Speaking about job_queue_processes, we get the value for it through the below equation.

nJobQueueProcesses => nOracleReservedProcesses + nTotalIFSBatchQueueProcesses + nBuffer

In the above,

for the Oracle Reserved Processes we keep 5 processes and for the buffer we keep 3 processes. On top of that you need to add the total IFS batch queue processes and assign a value greater or equal to that. 

Hope this helps you!

Userlevel 7
Badge +19

First the question about Touch Apps Que and also “PSO Integration Queue”. They are safe to deactivate. No need to remove them. If they are active they are being polled, even if you do not post any background jobs in those queues.

As you say, the background jobs for Customer Order like reserving, delivering should all be posted to a queue with one process since they can lock the same inventory part in stock records. Also creating and posting invoices and payments should be in a separate queue to avoid wait times for number series.

I normally put all related jobs in one separate queue with one process, for example a queue named “Customer Order Flow” for the ones related to Customer Order. Then they can use that queue and are not slowed down by other things posted. Same goes for invoicing.

Also if you have long running jobs you might want to put them in a separate queue to prevent them from causing wait times on other more critical jobs.

Things to add to the parallel queue can be so many things so it is hard to give examples since you might not use all things.

Examples: Reports, cleanup jobs, integrations that does not require a specific order of messages, jobs that you post at the same time for separate sites/companies that have no relation to each other, etc.

 

 

Userlevel 3
Badge +8

I believe I have seen the Deliver function lock itself a few times, as in the fast queue two Deliver transactions can run at the same time. I feel this queue should only have 1 process, if any jobs within have the potential to lock, when running at the same time?

 

I did have the bad experience once of having a queue that processed Customer Orders set as 2. The Locking that occurred was monumental.

Now we have a Queue, named Customer Order, with all of the expected order processing background jobs assigned.

An exception in this queue are Customer Invoicing jobs, create and print. These run in another queue and I have not experienced that Record Locking because those jobs are scheduled for a time when(most) customer order jobs are not running. The rule of thumb I was provided is to keep tasks that update a common LU in the same queue.