Skip to content

消息通信插件

LCGYL Framework 提供了灵活的消息通信解决方案。

插件列表

插件说明适用场景
lcgyl-mq-plugin进程内消息总线单机应用
lcgyl-kafka-pluginKafka 集成高吞吐、日志收集
lcgyl-rabbitmq-pluginRabbitMQ 集成可靠投递、复杂路由

选择指南

需要消息通信?

      ├── 单机应用 → mq-plugin(进程内)

      └── 分布式 ─┬── 高吞吐量 → kafka-plugin

                 └── 可靠投递 → rabbitmq-plugin

进程内消息

添加依赖

gradle
dependencies {
    implementation 'com.lcgyl:lcgyl-mq-plugin:2.2.0'
}

发布消息

java
@Component
public class OrderService {
    
    @Inject
    private MessageBus messageBus;
    
    public Order createOrder(CreateOrderRequest request) {
        Order order = orderRepository.save(request.toOrder());
        
        // 发布事件
        messageBus.publish(new OrderCreatedEvent(order));
        
        return order;
    }
}

订阅消息

java
@Component
public class NotificationService {
    
    @Subscribe("order.created")
    public void onOrderCreated(OrderCreatedEvent event) {
        // 发送通知
        sendNotification(event.getOrder().getUserId(), "订单创建成功");
    }
}

Kafka 集成

添加依赖

gradle
dependencies {
    implementation 'com.lcgyl:lcgyl-kafka-plugin:2.2.0'
}

配置

yaml
lcgyl:
  kafka:
    bootstrap-servers: localhost:9092
    consumer:
      group-id: my-group
      auto-offset-reset: earliest
    producer:
      acks: all

生产者

java
@Component
public class OrderProducer {
    
    @Inject
    private KafkaTemplate<String, Order> kafkaTemplate;
    
    public void sendOrder(Order order) {
        kafkaTemplate.send("orders", order.getId(), order);
    }
}

消费者

java
@Component
public class OrderConsumer {
    
    @KafkaListener(topics = "orders", groupId = "order-processor")
    public void consume(Order order) {
        // 处理订单
        processOrder(order);
    }
}

RabbitMQ 集成

添加依赖

gradle
dependencies {
    implementation 'com.lcgyl:lcgyl-rabbitmq-plugin:2.2.0'
}

配置

yaml
lcgyl:
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest
    virtual-host: /

发送消息

java
@Component
public class OrderSender {
    
    @Inject
    private RabbitTemplate rabbitTemplate;
    
    public void sendOrder(Order order) {
        rabbitTemplate.convertAndSend("orders.exchange", "order.created", order);
    }
}

接收消息

java
@Component
public class OrderReceiver {
    
    @RabbitListener(queues = "orders.queue")
    public void receive(Order order) {
        // 处理订单
        processOrder(order);
    }
}

对比

功能mq-pluginkafkarabbitmq
进程内
分布式
消息持久化
高吞吐✅✅
消息确认
死信队列
延迟消息

下一步

Released under the Apache License 2.0