优化tcp client node

This commit is contained in:
zhouhao 2020-02-20 19:30:15 +08:00
parent 814ae9a1ae
commit ec73bfec95
2 changed files with 6 additions and 7 deletions

View File

@ -34,10 +34,10 @@ public class TcpClientNode extends CommonExecutableRuleNodeFactoryStrategy<TcpCl
return data -> clientManager.<TcpClient>getNetwork(DefaultNetworkType.TCP_CLIENT,config.getClientId())
.flatMapMany(client -> RuleDataCodecs
.getCodec(TcpMessage.class)
.map(codec -> codec.decode(data, config.getSendPayloadType())
.map(codec -> codec.decode(data, config.getPayloadType())
.cast(TcpMessage.class)
.switchIfEmpty(Mono.fromRunnable(() -> context.logger().warn("can not decode rule data to tcp message:{}", data))))
.orElseGet(() -> Flux.just(new TcpMessage(config.getSendPayloadType().write(data.getData()))))
.orElseGet(() -> Flux.just(new TcpMessage(config.getPayloadType().write(data.getData()))))
.flatMap(client::send)
.all(r-> r))
;
@ -50,9 +50,9 @@ public class TcpClientNode extends CommonExecutableRuleNodeFactoryStrategy<TcpCl
context.onStop( clientManager.<TcpClient>getNetwork(DefaultNetworkType.TCP_CLIENT,config.getClientId())
.switchIfEmpty(Mono.fromRunnable(() -> context.logger().error("tcp client {} not found", config.getClientId())))
.flatMapMany(TcpClient::subscribe)
.doOnNext(msg -> context.logger().info("received tcp client message:{}", config.getSubPayloadType().read(msg.getPayload())))
.doOnNext(msg -> context.logger().info("received tcp client message:{}", config.getPayloadType().read(msg.getPayload())))
.map(r -> RuleDataCodecs.getCodec(TcpMessage.class)
.map(codec -> codec.encode(r, config.getSubPayloadType()))
.map(codec -> codec.encode(r, config.getPayloadType()))
.orElse(r.getPayload()))
.onErrorContinue((err, obj) -> {
context.logger().error("consume tcp message error", err);

View File

@ -16,9 +16,7 @@ public class TcpClientNodeConfig implements RuleNodeConfig {
private PubSubType type;
private PayloadType sendPayloadType;
private PayloadType subPayloadType;
private PayloadType payloadType;
@Override
public NodeType getNodeType() {
@ -34,6 +32,7 @@ public class TcpClientNodeConfig implements RuleNodeConfig {
public void validate() {
Assert.hasText(clientId, "clientId can not be empty!");
Assert.notNull(type, "type can not be null!");
Assert.notNull(payloadType, "payloadType can not be null!");
}
}