MST

星途 面试题库

面试题:微服务架构下Spring Cloud RocketMQ消息驱动应用的基础配置

在Spring Cloud RocketMQ的消息驱动应用中,简述如何配置RocketMQ的生产者和消费者,包括必要的依赖引入和基础属性配置。
42.9万 热度难度
后端开发微服务架构

知识考点

AI 面试

面试题答案

一键面试

1. 依赖引入

  1. Maven 依赖: 在 pom.xml 文件中添加以下依赖:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-stream-rocketmq</artifactId>
</dependency>
  1. Gradle 依赖: 在 build.gradle 文件中添加以下依赖:
implementation 'org.springframework.cloud:spring-cloud-starter-stream-rocketmq'

2. 生产者配置

  1. 基础属性配置: 在 application.propertiesapplication.yml 文件中配置生产者属性。 application.properties
spring.cloud.stream.rocketmq.binder.name-server=your_nameserver_address:port
spring.cloud.stream.rocketmq.producer.group=your_producer_group
spring.cloud.stream.rocketmq.producer.send-message-timeout=3000
spring.cloud.stream.bindings.output.producer.partition-count=3
spring.cloud.stream.bindings.output.producer.partition-key-expression='headers[\'rocketmq_partition_key\']'

application.yml

spring:
  cloud:
    stream:
      rocketmq:
        binder:
          name-server: your_nameserver_address:port
        producer:
          group: your_producer_group
          send-message-timeout: 3000
      bindings:
        output:
          producer:
            partition-count: 3
            partition-key-expression: 'headers[\'rocketmq_partition_key\']'
  1. 代码示例
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.stereotype.Service;

@Service
public class RocketMQProducer {

    @Autowired
    private MessageChannel output;

    public void sendMessage(String message) {
        output.send(MessageBuilder.withPayload(message).build());
    }
}

3. 消费者配置

  1. 基础属性配置: 同样在 application.propertiesapplication.yml 文件中配置消费者属性。 application.properties
spring.cloud.stream.rocketmq.binder.name-server=your_nameserver_address:port
spring.cloud.stream.rocketmq.consumer.group=your_consumer_group
spring.cloud.stream.bindings.input.consumer.concurrency=3
spring.cloud.stream.bindings.input.consumer.max-attempts=3

application.yml

spring:
  cloud:
    stream:
      rocketmq:
        binder:
          name-server: your_nameserver_address:port
        consumer:
          group: your_consumer_group
      bindings:
        input:
          consumer:
            concurrency: 3
            max-attempts: 3
  1. 代码示例
import org.springframework.cloud.stream.annotation.StreamListener;
import org.springframework.messaging.handler.annotation.Payload;
import org.springframework.stereotype.Component;

@Component
public class RocketMQConsumer {

    @StreamListener("input")
    public void receiveMessage(@Payload String message) {
        System.out.println("Received message: " + message);
    }
}