Skip to content

Commit 05f774c

Browse files
committed
Gate Redis-only beans on rqueue.backend; drop embedded Redis from e2e
Applies @conditional(RedisBackendCondition.class) to every Redis-shaped bean in rqueue-core so they stay out of the context when rqueue.backend=nats: - @bean factories in RqueueListenerBaseConfig: rqueueRedisLongTemplate, rqueueRedisListenerContainerFactory, scheduledMessageScheduler, processingMessageScheduler, stringRqueueRedisTemplate, rqueueStringDao, rqueueWorkerRegistry, rqueueLockManager, rqueueQueueMetrics, rqueueInternalPubSubChannel. - @repository / @service / @controller types: RqueueQStatsDaoImpl, RqueueJobDaoImpl, RqueueMessageMetadataDaoImpl, RqueueSystemConfigDaoImpl, RqueueDashboardChartServiceImpl, RqueueJobServiceImpl, RqueueMessageMetadataServiceImpl, RqueueQDetailServiceImpl, RqueueSystemManagerServiceImpl, RqueueUtilityServiceImpl, RqueueViewControllerServiceImpl, RqueueRestController, ReactiveRqueueRestController, RqueueViewController, ReactiveRqueueViewController. The four controllers compose the new condition with their existing Reactive(Enabled|Disabled) guard via @conditional({RedisBackendCondition.class, ReactiveDisabled.class}). BaseMessageSender now autowires its Redis-shaped collaborators (RqueueStringDao, RqueueMessageMetadataService) with required=false; the producer methods that touch them already short-circuit on the broker capability flag, so a null reference is safe on the NATS path. NatsBackendEndToEndIT no longer needs an embedded Redis to satisfy the Spring bean graph and reverts to excluding DataRedisAutoConfiguration so the test boots truly Redis-free. Adds .claude/ to .gitignore so agent worktrees don't end up tracked. Assisted-By: Claude Code
1 parent 6842cdf commit 05f774c

19 files changed

Lines changed: 94 additions & 51 deletions

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,4 @@ hs_err_pid*
3232
/*/build/
3333
/*/log
3434

35-
.DS_Store
35+
.DS_Store.claude/

rqueue-core/src/main/java/com/github/sonus21/rqueue/config/RqueueListenerBaseConfig.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,11 +207,13 @@ protected RqueueMessageTemplate getMessageTemplate(RqueueConfig rqueueConfig) {
207207
}
208208

209209
@Bean
210+
@Conditional(RedisBackendCondition.class)
210211
public RedisTemplate<String, Long> rqueueRedisLongTemplate(RqueueConfig rqueueConfig) {
211212
return getRedisTemplate(rqueueConfig.getConnectionFactory());
212213
}
213214

214215
@Bean
216+
@Conditional(RedisBackendCondition.class)
215217
public RqueueRedisListenerContainerFactory rqueueRedisListenerContainerFactory() {
216218
return new RqueueRedisListenerContainerFactory();
217219
}
@@ -223,6 +225,7 @@ public RqueueRedisListenerContainerFactory rqueueRedisListenerContainerFactory()
223225
* @return {@link ScheduledQueueMessageScheduler} object
224226
*/
225227
@Bean
228+
@Conditional(RedisBackendCondition.class)
226229
public ScheduledQueueMessageScheduler scheduledMessageScheduler() {
227230
return new ScheduledQueueMessageScheduler();
228231
}
@@ -234,26 +237,31 @@ public ScheduledQueueMessageScheduler scheduledMessageScheduler() {
234237
* @return {@link ProcessingQueueMessageScheduler} object
235238
*/
236239
@Bean
240+
@Conditional(RedisBackendCondition.class)
237241
public ProcessingQueueMessageScheduler processingMessageScheduler() {
238242
return new ProcessingQueueMessageScheduler();
239243
}
240244

241245
@Bean
246+
@Conditional(RedisBackendCondition.class)
242247
public RqueueRedisTemplate<String> stringRqueueRedisTemplate(RqueueConfig rqueueConfig) {
243248
return new RqueueRedisTemplate<>(rqueueConfig.getConnectionFactory());
244249
}
245250

246251
@Bean
252+
@Conditional(RedisBackendCondition.class)
247253
public RqueueStringDao rqueueStringDao(RqueueConfig rqueueConfig) {
248254
return new RqueueStringDaoImpl(rqueueConfig);
249255
}
250256

251257
@Bean
258+
@Conditional(RedisBackendCondition.class)
252259
public RqueueWorkerRegistry rqueueWorkerRegistry(RqueueConfig rqueueConfig) {
253260
return new RqueueWorkerRegistryImpl(rqueueConfig);
254261
}
255262

256263
@Bean
264+
@Conditional(RedisBackendCondition.class)
257265
public RqueueLockManager rqueueLockManager(RqueueStringDao rqueueStringDao) {
258266
return new RqueueLockManagerImpl(rqueueStringDao);
259267
}
@@ -286,6 +294,7 @@ public org.springframework.web.reactive.result.view.ViewResolver reactiveRqueueV
286294
}
287295

288296
@Bean
297+
@Conditional(RedisBackendCondition.class)
289298
public RqueueQueueMetrics rqueueQueueMetrics(
290299
RqueueRedisTemplate<String> stringRqueueRedisTemplate) {
291300
return new RqueueQueueMetrics(stringRqueueRedisTemplate);
@@ -297,6 +306,7 @@ public RqueueBeanProvider rqueueBeanProvider() {
297306
}
298307

299308
@Bean
309+
@Conditional(RedisBackendCondition.class)
300310
public RqueueInternalPubSubChannel rqueueInternalPubSubChannel(
301311
RqueueRedisListenerContainerFactory rqueueRedisListenerContainerFactory,
302312
RqueueMessageListenerContainer rqueueMessageListenerContainer,

rqueue-core/src/main/java/com/github/sonus21/rqueue/core/impl/BaseMessageSender.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,15 @@ abstract class BaseMessageSender {
5454
protected final RqueueMessageTemplate messageTemplate;
5555
protected final RqueueMessageIdGenerator messageIdGenerator;
5656

57-
@Autowired
57+
// Redis-only collaborators — absent when rqueue.backend=nats. Methods that touch them
58+
// already short-circuit on the broker capability flag, so a null is safe.
59+
@Autowired(required = false)
5860
protected RqueueStringDao rqueueStringDao;
5961

6062
@Autowired
6163
protected RqueueConfig rqueueConfig;
6264

63-
@Autowired
65+
@Autowired(required = false)
6466
protected RqueueMessageMetadataService rqueueMessageMetadataService;
6567

6668
BaseMessageSender(

rqueue-core/src/main/java/com/github/sonus21/rqueue/dao/impl/RqueueJobDaoImpl.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616

1717
package com.github.sonus21.rqueue.dao.impl;
1818

19+
import com.github.sonus21.rqueue.config.RedisBackendCondition;
20+
import org.springframework.context.annotation.Conditional;
21+
1922
import com.github.sonus21.rqueue.common.RqueueRedisTemplate;
2023
import com.github.sonus21.rqueue.config.RqueueConfig;
2124
import com.github.sonus21.rqueue.dao.RqueueJobDao;
@@ -32,6 +35,7 @@
3235
import org.springframework.beans.factory.annotation.Autowired;
3336
import org.springframework.stereotype.Repository;
3437

38+
@Conditional(RedisBackendCondition.class)
3539
@Repository
3640
public class RqueueJobDaoImpl implements RqueueJobDao {
3741

rqueue-core/src/main/java/com/github/sonus21/rqueue/dao/impl/RqueueMessageMetadataDaoImpl.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616

1717
package com.github.sonus21.rqueue.dao.impl;
1818

19+
import com.github.sonus21.rqueue.config.RedisBackendCondition;
20+
import org.springframework.context.annotation.Conditional;
21+
1922
import com.github.sonus21.rqueue.common.ReactiveRqueueRedisTemplate;
2023
import com.github.sonus21.rqueue.common.RqueueRedisTemplate;
2124
import com.github.sonus21.rqueue.config.RqueueConfig;
@@ -31,6 +34,7 @@
3134
import org.springframework.util.Assert;
3235
import reactor.core.publisher.Mono;
3336

37+
@Conditional(RedisBackendCondition.class)
3438
@Repository
3539
public class RqueueMessageMetadataDaoImpl implements RqueueMessageMetadataDao {
3640

rqueue-core/src/main/java/com/github/sonus21/rqueue/dao/impl/RqueueQStatsDaoImpl.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616

1717
package com.github.sonus21.rqueue.dao.impl;
1818

19+
import com.github.sonus21.rqueue.config.RedisBackendCondition;
20+
import org.springframework.context.annotation.Conditional;
21+
1922
import com.github.sonus21.rqueue.common.RqueueRedisTemplate;
2023
import com.github.sonus21.rqueue.config.RqueueConfig;
2124
import com.github.sonus21.rqueue.dao.RqueueQStatsDao;
@@ -27,6 +30,7 @@
2730
import org.springframework.beans.factory.annotation.Autowired;
2831
import org.springframework.stereotype.Repository;
2932

33+
@Conditional(RedisBackendCondition.class)
3034
@Repository
3135
public class RqueueQStatsDaoImpl implements RqueueQStatsDao {
3236

rqueue-core/src/main/java/com/github/sonus21/rqueue/dao/impl/RqueueSystemConfigDaoImpl.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616

1717
package com.github.sonus21.rqueue.dao.impl;
1818

19+
import com.github.sonus21.rqueue.config.RedisBackendCondition;
20+
import org.springframework.context.annotation.Conditional;
21+
1922
import com.github.sonus21.rqueue.common.RqueueRedisTemplate;
2023
import com.github.sonus21.rqueue.config.RqueueConfig;
2124
import com.github.sonus21.rqueue.dao.RqueueSystemConfigDao;
@@ -32,6 +35,7 @@
3235
import org.springframework.stereotype.Repository;
3336
import org.springframework.util.CollectionUtils;
3437

38+
@Conditional(RedisBackendCondition.class)
3539
@Repository
3640
public class RqueueSystemConfigDaoImpl implements RqueueSystemConfigDao {
3741

rqueue-core/src/main/java/com/github/sonus21/rqueue/web/controller/ReactiveRqueueRestController.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616

1717
package com.github.sonus21.rqueue.web.controller;
1818

19+
import com.github.sonus21.rqueue.config.RedisBackendCondition;
20+
import org.springframework.context.annotation.Conditional;
21+
1922
import com.github.sonus21.rqueue.config.RqueueWebConfig;
2023
import com.github.sonus21.rqueue.exception.ProcessingException;
2124
import com.github.sonus21.rqueue.models.enums.AggregationType;
@@ -55,8 +58,9 @@
5558
import org.springframework.web.bind.annotation.RestController;
5659
import reactor.core.publisher.Mono;
5760

61+
@Conditional({RedisBackendCondition.class, ReactiveEnabled.class})
5862
@RestController
59-
@Conditional(ReactiveEnabled.class)
63+
6064
@RequestMapping(path = "${rqueue.web.url.prefix:}rqueue/api/v1")
6165
public class ReactiveRqueueRestController extends BaseReactiveController {
6266

rqueue-core/src/main/java/com/github/sonus21/rqueue/web/controller/ReactiveRqueueViewController.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616

1717
package com.github.sonus21.rqueue.web.controller;
1818

19+
import com.github.sonus21.rqueue.config.RedisBackendCondition;
20+
import org.springframework.context.annotation.Conditional;
21+
1922
import com.github.sonus21.rqueue.config.RqueueWebConfig;
2023
import com.github.sonus21.rqueue.utils.condition.ReactiveEnabled;
2124
import com.github.sonus21.rqueue.web.service.RqueueViewControllerService;
@@ -35,9 +38,10 @@
3538
import org.springframework.web.reactive.result.view.ViewResolver;
3639
import reactor.core.publisher.Mono;
3740

41+
@Conditional({RedisBackendCondition.class, ReactiveEnabled.class})
3842
@Controller
3943
@RequestMapping(path = "${rqueue.web.url.prefix:}rqueue")
40-
@Conditional(ReactiveEnabled.class)
44+
4145
public class ReactiveRqueueViewController extends BaseReactiveController {
4246

4347
private final ViewResolver rqueueViewResolver;

rqueue-core/src/main/java/com/github/sonus21/rqueue/web/controller/RqueueRestController.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616

1717
package com.github.sonus21.rqueue.web.controller;
1818

19+
import com.github.sonus21.rqueue.config.RedisBackendCondition;
20+
import org.springframework.context.annotation.Conditional;
21+
1922
import com.github.sonus21.rqueue.config.RqueueWebConfig;
2023
import com.github.sonus21.rqueue.exception.ProcessingException;
2124
import com.github.sonus21.rqueue.models.enums.AggregationType;
@@ -54,9 +57,9 @@
5457
import org.springframework.web.bind.annotation.ResponseBody;
5558
import org.springframework.web.bind.annotation.RestController;
5659

60+
@Conditional({RedisBackendCondition.class, ReactiveDisabled.class})
5761
@RestController
5862
@RequestMapping(path = "${rqueue.web.url.prefix:}rqueue/api/v1")
59-
@Conditional(ReactiveDisabled.class)
6063
public class RqueueRestController extends BaseController {
6164

6265
private final RqueueDashboardChartService rqueueDashboardChartService;

0 commit comments

Comments
 (0)