fix: FcAnswerConsumer 条件化(配 rabbitmq.host 才装配)——未配 broker 时 @RabbitListener 因容器工厂缺失打断启动
build / build-push (push) Successful in 55s

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