面试题答案
一键面试1. 依赖引入
- Maven 依赖:
在
pom.xml
文件中添加以下依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-rocketmq</artifactId>
</dependency>
- Gradle 依赖:
在
build.gradle
文件中添加以下依赖:
implementation 'org.springframework.cloud:spring-cloud-starter-stream-rocketmq'
2. 生产者配置
- 基础属性配置:
在
application.properties
或application.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\']'
- 代码示例:
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. 消费者配置
- 基础属性配置:
同样在
application.properties
或application.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
- 代码示例:
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);
}
}