快速开始
我们通过一个简单的Demo来介绍如何使用 LOKI 的功能。
初始化
创建一个空的Spring Boot 工程(2.x、3.x 都支持)这里我们使用 3.2.0 版本。
添加依赖
<dependency>
<groupId>com.github.guoshiqiufeng</groupId>
<artifactId>loki-spring-boot-starter</artifactId>
<version>1.2.1</version>
</dependency>
implementation 'com.github.guoshiqiufeng:loki-spring-boot-starter:1.2.1'
implementation group: 'com.github.guoshiqiufeng', name: 'loki-spring-boot-starter', version: '1.2.1'
配置
在 application.yml 中添加配置:
loki:
global-config:
mq-config:
mq-type: rocket_mq
address: 127.0.0.1:8081
auth: false
username: un
password: ps
connect-timeout: 300
在启动类上添加注解 @LokiMapperScan
,并在需要的方法上添加注解 @Loki
,如下:
@LokiMapperScan
@SpringBootApplication
public class LokiTestApplication {
public static void main(String[] args) {
SpringApplication.run(LokiTestApplication.class, args);
}
}
编码
编写实体类 TestEntity.java
@Data
@MessageName(topic = "loki", tag = "create")
public class TestEntity {
@MessageKey
private String id;
private String message;
}
编写Mapper类 TestMapper.java
public interface TestMapper extends BaseMapper<TestEntity> {
}
编写监听类 TestListener.java
@Component
public class TestListener implements Listener<TestEntity> {
@Override
public void onMessage(MessageContent<TestEntity> entity) {
log.debug("entity:{}", entity);
}
}
开始使用
添加测试Controller类,进行功能测试:
@Slf4j
@RestController
public class TestController {
@Resource
private TestMapper testMapper;
@GetMapping("send")
public String send() {
TestEntity entity = new TestEntity();
entity.setId("9521");
entity.setMessage("test");
String messageId = testMapper.send(entity);
log.debug("send messageId:{}", messageId);
return "success";
}
@GetMapping("sendAsync")
public String sendAsync() {
TestEntity entity = new TestEntity();
entity.setId("9521");
entity.setMessage("sendAsync");
testMapper.sendAsync(entity);
return "success";
}
}
完整的代码示例 查看 loki-test
小结
通过以上几个简单的步骤,我们就实现了 TestEntity 的发送和消费。