Class FaqIndexConsumer

java.lang.Object
com.bytedesk.kbase.faq.mq.FaqIndexConsumer

@Component public class FaqIndexConsumer extends Object
FAQ索引消费者 用于处理FAQ索引队列中的消息
  • Field Details

  • Constructor Details

    • FaqIndexConsumer

      public FaqIndexConsumer()
  • Method Details

    • processIndexMessage

      @JmsListener(destination="artemis.queue.faq.index", containerFactory="jmsArtemisQueueFactory", concurrency="3-10") public void processIndexMessage(jakarta.jms.Message jmsMessage, FaqIndexMessage message)
      处理FAQ索引队列中的消息 使用客户端确认模式,只有成功处理后才确认消息 增强了对乐观锁冲突的处理
      Parameters:
      jmsMessage - JMS原始消息
      message - FAQ索引消息
    • handleIndexOperation

      private void handleIndexOperation(FaqEntity faq, FaqIndexMessage message)
      处理索引操作 将全文索引和向量索引的操作分开处理,避免一个操作失败影响另一个操作
    • processElasticIndex

      @Transactional(propagation=REQUIRES_NEW) public void processElasticIndex(FaqEntity faq)
      在单独事务中处理全文索引
    • processVectorIndex

      public void processVectorIndex(FaqEntity faq)
      在单独事务中处理向量索引
    • deleteFaqVector

      @Transactional(propagation=REQUIRES_NEW) public Boolean deleteFaqVector(FaqEntity faq)
      在完全独立事务中删除向量索引
    • indexFaqVector

      @Transactional(propagation=REQUIRES_NEW) public Boolean indexFaqVector(FaqEntity faq)
      在完全独立事务中创建向量索引
    • handleDeleteOperation

      private void handleDeleteOperation(FaqEntity faq, FaqIndexMessage message)
      处理删除操作 将全文索引和向量索引的删除操作分开处理
    • processElasticDelete

      @Transactional(propagation=REQUIRES_NEW) public Boolean processElasticDelete(String faqUid)
      在单独事务中处理全文索引删除
    • processVectorDelete

      @Transactional(propagation=REQUIRES_NEW) public Boolean processVectorDelete(FaqEntity faq)
      在单独事务中处理向量索引删除
    • acknowledgeMessage

      private void acknowledgeMessage(jakarta.jms.Message message)
      安全地确认消息 只有在消息处理成功后才调用此方法
      Parameters:
      message - JMS消息