跳到主要内容
版本:2.2.4

客户端介绍

PhoenixClient主要用于向PhoenixServer发送cmd和接收PhoenixServer返回的event

maven依赖

<dependency>
<groupId>com.iquantex</groupId>
<artifactId>phoenix-client-starter</artifactId>
<version>2.2.4</version>
</dependency>

客户端配置

spring boot配置文件中添加phoenix配置信息, 2.2.1版本后phoenix-client增加消息重试功能。

quantex:
phoenix:
client: # client端配置
name: ${spring.application.name}-client # 服务名称
max-retry-num: 2 # 最大重试次数
retry-interval: 1000000000 # 重试间隔(单位毫秒,默认10s)
mq:
type: kafka # mq类型
address: 127.0.0.1:9092 # mq服务地址

相关配置介绍 请参见: 配置详情

接口说明

PhoenixClient提供两种接口,需要回复以及不需要回复的。

    /**
* 发送接口
*
* @param msg rpc调用消息
* @param targetTopic 消息目标服务的Topic
* @param requestId 请求ID
* @return RPC返回结果
*/
Future<RpcResult> send(Object msg, String targetTopic, String requestId);

/**
* 发送接口
*
* @param msg rpc调用消息
* @param targetTopic 消息目标服务的Topic
* @param requestId 请求ID
*/
void sendNoReply(Object msg, String targetTopic, String requestId);

使用样例

启动phoenix项目后,Phoenix会自动创建PhoenixClient bean,可以通过@Autowired进行依赖注入

同步调用

通过调用send返回Future对象的get方法同步接收请求结果

@Autowired
private PhoenixClient client;

public void send() {
Future<RpcResult> future = client.send(new Command(), "target_topic", UUID.randomUUID());
RpcResult rpcResult = future.get();
}

异步调用

@Autowired
private PhoenixClient client;

public void send() {
client.sendNoReply(new Command(), "target_topic", UUID.randomUUID());
}