fix: FcAnswerConsumer 条件化(配 rabbitmq.host 才装配)——未配 broker 时 @RabbitListener 因容器工厂缺失打断启动
build / build-push (push) Successful in 55s
build / build-push (push) Successful in 55s
inbox 唯一写入口是 MQ 消费路径,未配 broker 时重报扫描无台账可扫,条件化语义无损;签名收据路径不经过本类。
This commit is contained in:
@@ -26,9 +26,13 @@ import java.util.List;
|
|||||||
/**
|
/**
|
||||||
* v2 快照消费者(answer-delivery-v2 §7,TASK_2 B.5/B.6)。
|
* v2 快照消费者(answer-delivery-v2 §7,TASK_2 B.5/B.6)。
|
||||||
*
|
*
|
||||||
* <p>本类由 {@link FcAnswerMqConfiguration} 在<b>已配置 broker</b> 时才绑上监听容器;
|
* <p>本类<b>整体条件装配</b>:只有显式配了 {@code spring.rabbitmq.host} 才存在(与
|
||||||
* 未接 MQ 的环境里它只是"没人投递的一个 bean",但投影链仍可用——可信建件的第二条路径
|
* {@link FcAnswerMqConfiguration} 同一条件表达式)。未接 MQ 的环境里 bean 不创建,
|
||||||
* (签名收据确认)不依赖 broker,这也是本机联调能跑通全链的原因。</p>
|
* {@code @RabbitListener} 端点自然不被注册——"MQ 可选"必须落到启动期:注解处理器在
|
||||||
|
* 容器工厂缺失时会直接抛 {@code NoSuchBeanDefinitionException} 打断启动,不会优雅跳过。
|
||||||
|
* 重报扫描随之停摆是安全的:{@code fc_answer_inbox} 的唯一写入口是 {@code #onMessage}
|
||||||
|
* (经 {@code AnswerProjectionStore#applySnapshot}),没消费就没台账,扫描没有可做的事;
|
||||||
|
* 可信建件的第二条路径(签名收据确认)不经过本类。</p>
|
||||||
*
|
*
|
||||||
* <p>三条 ack 纪律:</p>
|
* <p>三条 ack 纪律:</p>
|
||||||
* <ol>
|
* <ol>
|
||||||
@@ -44,6 +48,8 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
|
@org.springframework.boot.autoconfigure.condition.ConditionalOnExpression(
|
||||||
|
"!'${spring.rabbitmq.host:}'.trim().isEmpty()")
|
||||||
public class FcAnswerConsumer {
|
public class FcAnswerConsumer {
|
||||||
|
|
||||||
private final AnswerProjectionStore projectionStore;
|
private final AnswerProjectionStore projectionStore;
|
||||||
|
|||||||
Reference in New Issue
Block a user