1.导入依赖pom.xml如下-关键依赖
<dependencies>
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</build>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
2.配置文件
spring:
server:
port: 4300
rocketmq:
nameServer: 47.111.11.11:9876
3.生产者
3.1普通消息生产者
@SpringBootTest
@RunWith(SpringRunner.class)
public class SimpleProducer {
@Autowired
private RocketMQTemplate rocketMQTemplate;
//生产者发送消息
@Test
public void sendDemoSimpleMessage() {
Map<String,Object> header = new HashMap<>();
//header用来存标识唯一消息的key
header.put(MessageConst.PROPERTY_KEYS, "apple001");
//这里的message一般是json对象
String message = "这是一条消息";
for (int i = 0; i <1 ; i++) {
//这里:后面的food是tag
//header里面存的是key
rocketMQTemplate.convertAndSend("my-topic:food",message,header);
}
}
}
查看消息
3.1顺序消息生产者
@SpringBootTest
@RunWith(SpringRunner.class)
public class OrderProducer {
@Autowired
private RocketMQTemplate rocketMQTemplate;
@Test
public void sendDemoSimpleMessage() {
for (int i = 0; i < 5; i++) {
//这里的message一般是json对象
String message = "发送顺序消息"+i;
rocketMQTemplate.syncSendOrderly("my-topic:order_M",message, "WeiYiKey");
}
}
}
查看消息【顺序消息好像没法指定key,但可以在message里面自己指定】
4.消费者
4.1普通消费者
@Component
@RocketMQMessageListener(topic = "my-topic",
consumerGroup = "demo-group",
selectorExpression = "food",
consumeMode = ConsumeMode.CONCURRENTLY,
messageModel = MessageModel.CLUSTERING)
public class SimpleConsumer implements RocketMQListener<String> {
@Override
public void onMessage(String message) {
System.out.println("普通消息 = " + message);
}
}
4.2顺序消费者
@Component
@RocketMQMessageListener(topic = "my-topic",
consumerGroup = "order-demo-group",
selectorExpression = "order_M",
consumeMode = ConsumeMode.ORDERLY,
messageModel = MessageModel.BROADCASTING)
public class OrderConsumer implements RocketMQListener<String> {
@Override
public void onMessage(String message) {
System.out.println("顺序消息 = " + message);
}
}
5.资料
---------------------------------------messageModel 消息模型【默认集群模式】
【集群模式】messageModel = MessageModel.CLUSTERING
【广播模式】messageModel = MessageModel.BROADCASTING【很少用到广播模式】集群模式[30条消息分给多个消费者]
广播模式[30条消息,每个消费者消费30条]--------------------------------------consumeMode 消息模型【默认并发消费】
【无序/并发消费】consumeMode = ConsumeMode.CONCURRENTLY
【有序消费】consumeMode = ConsumeMode.ORDERLY