Queue Management & Workers¶
Akeneo PIM uses daemons to execute jobs (i.e: imports, exports, etc.) from a queue.
Job daemons are managed by
systemd which allows multiple operations such as:
start/stop/restart a daemon,
enable/disable a daemon,
check the status/see logs of a daemon.
Please note that, while the number of running job consumers is not enforced, it is not recommended to increase it above the server capability. Between 1 and 3 consumers is recommended.
To see how and which commands are available, please refer to Privilege escalation
Configurations of daemons are stored under /home/akeneo/.systemd/pim_job_queue. The name of the file is the daemon identifier. Make it simple and use only integer numbers.
As of PIM 3.1, each daemon can be dedicated to run certain job(s), hence making sure the jobs will be executed in a timely manner, and that their execution will not interfere with other business operations.
Daemons files can be configured for 3 behaviors:
Handle all jobs: (Default) Keep the configuration file empty,
Specific jobs: (Whitelist) Write their names (One per line) in the configuration file,
Exclude jobs: (Blacklist) Write their names (One per line), preceded by a
!(exclamation mark) in the configuration file.
Once their configuration files are created, you can manipulate these daemons through our tool called partners_systemctl as you would do with systemctl.
- Create a new daemon which handles all type of jobs:
1# Create a file for the new daemon and keep it empty to handle all jobs 2touch /home/akeneo/.systemd/pim_job_queue/3.conf 3 4# Start the worker with its name (configuration filename without extension) 5partners_systemctl pim_job_queue@3 start 6 7# Enable the worker to be started automatically at instance boot up 8partners_systemctl pim_job_queue@3 enable
- Create a new daemon which handles specific jobs:
1# Create a file with specific jobs 2echo -e "csv_product_export\ncsv_category_export\ncsv_family_export" > /home/akeneo/.systemd/pim_job_queue/4.conf 3 4cat /home/akeneo/.systemd/pim_job_queue/4.conf 5csv_product_export 6csv_category_export 7csv_family_export 8 9# Start the worker with its name (configuration filename without extension) 10partners_systemctl pim_job_queue@4 start 11 12# Enable the worker to be started automatically at instance boot up 13partners_systemctl pim_job_queue@4 enable
- Create a new daemon which excludes specific jobs:
1# Create a file with specific jobs 2echo -e "!csv_product_export\n!csv_category_export" > /home/akeneo/.systemd/pim_job_queue/5.conf 3 4cat /home/akeneo/.systemd/pim_job_queue/5.conf 5!csv_product_export 6!csv_category_export 7 8# Start the worker with its name (configuration filename without extension) 9partners_systemctl pim_job_queue@5 start 10 11# Enable the worker to be started automatically at instance boot up 12partners_systemctl pim_job_queue@5 enable
- Remove an existing daemon (not possible on Akeneo default ones):
1# Stop the worker with its name (configuration filename without extension) 2partners_systemctl pim_job_queue@7 stop 3 4# Disable the worker not to be started automatically at instance boot up 5partners_systemctl pim_job_queue@7 disable 6 7# Delete its configuration file 8rm /home/akeneo/.systemd/pim_job_queue/7.conf
- Manage all daemons at once:
1# Check the status of all daemons 2partners_systemctl pim_job_queue@* status 3 4# Restart all daemons 5partners_systemctl pim_job_queue@* restart
While Onboarder requires workers to run at all times, those are disabled by default since some customers do not use Onboarder.
Learn more about Onboarder and its configuration in the PIM in the dedicated section Akeneo Onboarder.
Similarly to PIM job consumers, here is how you can manipulate Onboarder daemons:
1# Start the worker 2partners_systemctl pim_onboarder_worker@1 start 3 4# Enable worker #1 to be started at instance boot 5partners_systemctl pim_onboarder_worker@1 enable 6 7# Check the status of the daemon #1 8partners_systemctl pim_onboarder_worker@1 status 9 10# Stop daemon #1 11partners_systemctl pim_onboarder_worker@1 stop
Found a typo or a hole in the documentation and feel like contributing?
Join us on Github!