Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.
SOLVED

Restricting Scheduler to run in published Env.

Avatar

Level 1

I want to restrict the scheduler to run in published env. which approach will be good for this?

1 Accepted Solution

Avatar

Correct answer by
Level 5

In the run() of scheduler you have to runmode wheather its autour or publisher

@Reference

    private SlingSettingsService settingsService;

    private Set<String> runModes;

    @Override

    public void run() {

        this.runModes = settingsService.getRunModes();

        if (null != runModes && runModes.contains("author")) {

//your code goes here...

}

View solution in original post

4 Replies

Avatar

Community Advisor

Use run mode configuration.

Add a config in config.author folder so that scheduler will not run in author

Add a config in config.publish folder so that it gets executed in publish.

Hope this helps.

Avatar

Community Advisor

Hi venusj64090183

In your service, you can define policy = ConfigurationPolicy.REQUIRE as below

@Component(policy = ConfigurationPolicy.REQUIRE) 

Now create OSGi config only for publish run mode. Your service will not satisfied with the author instance.

Reference: OSGi component in AEM that is active only in specific run mode (say, publish). – Compute Patterns

Regards,

Arpit

Avatar

Correct answer by
Level 5

In the run() of scheduler you have to runmode wheather its autour or publisher

@Reference

    private SlingSettingsService settingsService;

    private Set<String> runModes;

    @Override

    public void run() {

        this.runModes = settingsService.getRunModes();

        if (null != runModes && runModes.contains("author")) {

//your code goes here...

}

Avatar

Employee Advisor

While the answer by khamat.bn​ works for that, the best solution for this is the one by arpitv27529355​: You should never hardcode this in the code, but rely on configuration instead.

Personally I would consider every call of SlingSettingsService.getRunmodes() as bad practice.