Search in sources :

Example 1 with ProtocolAdaptor

use of org.apache.eventmesh.protocol.api.ProtocolAdaptor in project incubator-eventmesh by apache.

the class SessionPusher method push.

public void push(final DownStreamMsgContext downStreamMsgContext) {
    Command cmd;
    if (SubscriptionMode.BROADCASTING.equals(downStreamMsgContext.subscriptionItem.getMode())) {
        cmd = Command.BROADCAST_MESSAGE_TO_CLIENT;
    } else if (SubscriptionType.SYNC.equals(downStreamMsgContext.subscriptionItem.getType())) {
        cmd = Command.REQUEST_TO_CLIENT;
    } else {
        cmd = Command.ASYNC_MESSAGE_TO_CLIENT;
    }
    String protocolType = Objects.requireNonNull(downStreamMsgContext.event.getExtension(Constants.PROTOCOL_TYPE)).toString();
    ProtocolAdaptor protocolAdaptor = ProtocolPluginFactory.getProtocolAdaptor(protocolType);
    Package pkg = new Package();
    downStreamMsgContext.event = CloudEventBuilder.from(downStreamMsgContext.event).withExtension(EventMeshConstants.REQ_EVENTMESH2C_TIMESTAMP, String.valueOf(System.currentTimeMillis())).build();
    EventMeshMessage body = null;
    int retCode = 0;
    String retMsg = null;
    try {
        pkg = (Package) protocolAdaptor.fromCloudEvent(downStreamMsgContext.event);
        pkg.setHeader(new Header(cmd, OPStatus.SUCCESS.getCode(), null, downStreamMsgContext.seq));
        pkg.getHeader().putProperty(Constants.PROTOCOL_TYPE, protocolType);
        messageLogger.info("pkg|mq2eventMesh|cmd={}|mqMsg={}|user={}", cmd, pkg, session.getClient());
    } catch (Exception e) {
        pkg.setHeader(new Header(cmd, OPStatus.FAIL.getCode(), e.getStackTrace().toString(), downStreamMsgContext.seq));
        retCode = -1;
        retMsg = e.toString();
    } finally {
        session.getClientGroupWrapper().get().getEventMeshTcpMonitor().getTcpSummaryMetrics().getEventMesh2clientMsgNum().incrementAndGet();
        session.getContext().writeAndFlush(pkg).addListener(new ChannelFutureListener() {

            @Override
            public void operationComplete(ChannelFuture future) throws Exception {
                if (!future.isSuccess()) {
                    logger.error("downstreamMsg fail,seq:{}, retryTimes:{}, event:{}", downStreamMsgContext.seq, downStreamMsgContext.retryTimes, downStreamMsgContext.event);
                    deliverFailMsgsCount.incrementAndGet();
                    // how long to isolate client when push fail
                    long isolateTime = System.currentTimeMillis() + session.getEventMeshTCPConfiguration().eventMeshTcpPushFailIsolateTimeInMills;
                    session.setIsolateTime(isolateTime);
                    logger.warn("isolate client:{},isolateTime:{}", session.getClient(), isolateTime);
                    // retry
                    long delayTime = SubscriptionType.SYNC.equals(downStreamMsgContext.subscriptionItem.getType()) ? session.getEventMeshTCPConfiguration().eventMeshTcpMsgRetrySyncDelayInMills : session.getEventMeshTCPConfiguration().eventMeshTcpMsgRetryAsyncDelayInMills;
                    downStreamMsgContext.delay(delayTime);
                    session.getClientGroupWrapper().get().getEventMeshTcpRetryer().pushRetry(downStreamMsgContext);
                } else {
                    deliveredMsgsCount.incrementAndGet();
                    logger.info("downstreamMsg success,seq:{}, retryTimes:{}, bizSeq:{}", downStreamMsgContext.seq, downStreamMsgContext.retryTimes, EventMeshUtil.getMessageBizSeq(downStreamMsgContext.event));
                    if (session.isIsolated()) {
                        logger.info("cancel isolated,client:{}", session.getClient());
                        session.setIsolateTime(System.currentTimeMillis());
                    }
                }
            }
        });
    }
}
Also used : ChannelFuture(io.netty.channel.ChannelFuture) Header(org.apache.eventmesh.common.protocol.tcp.Header) Command(org.apache.eventmesh.common.protocol.tcp.Command) ProtocolAdaptor(org.apache.eventmesh.protocol.api.ProtocolAdaptor) Package(org.apache.eventmesh.common.protocol.tcp.Package) ChannelFutureListener(io.netty.channel.ChannelFutureListener) EventMeshMessage(org.apache.eventmesh.common.protocol.tcp.EventMeshMessage)

Example 2 with ProtocolAdaptor

use of org.apache.eventmesh.protocol.api.ProtocolAdaptor in project incubator-eventmesh by apache.

the class ReplyMessageProcessor method processRequest.

@Override
public void processRequest(ChannelHandlerContext ctx, AsyncContext<HttpCommand> asyncContext) throws Exception {
    HttpCommand responseEventMeshCommand;
    cmdLogger.info("cmd={}|{}|client2eventMesh|from={}|to={}", RequestCode.get(Integer.valueOf(asyncContext.getRequest().getRequestCode())), EventMeshConstants.PROTOCOL_HTTP, RemotingHelper.parseChannelRemoteAddr(ctx.channel()), IPUtils.getLocalAddress());
    ReplyMessageRequestHeader replyMessageRequestHeader = (ReplyMessageRequestHeader) asyncContext.getRequest().getHeader();
    // ReplyMessageRequestBody replyMessageRequestBody = (ReplyMessageRequestBody) asyncContext.getRequest().getBody();
    String protocolType = replyMessageRequestHeader.getProtocolType();
    ProtocolAdaptor<ProtocolTransportObject> httpCommandProtocolAdaptor = ProtocolPluginFactory.getProtocolAdaptor(protocolType);
    CloudEvent event = httpCommandProtocolAdaptor.toCloudEvent(asyncContext.getRequest());
    ReplyMessageResponseHeader replyMessageResponseHeader = ReplyMessageResponseHeader.buildHeader(Integer.valueOf(asyncContext.getRequest().getRequestCode()), eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshCluster, IPUtils.getLocalAddress(), eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshEnv, eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshIDC);
    // validate event
    if (event == null || StringUtils.isBlank(event.getId()) || event.getSource() == null || event.getSpecVersion() == null || StringUtils.isBlank(event.getType()) || StringUtils.isBlank(event.getSubject())) {
        responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse(replyMessageResponseHeader, ReplyMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getRetCode(), EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getErrMsg()));
        asyncContext.onComplete(responseEventMeshCommand);
        return;
    }
    String idc = Objects.requireNonNull(event.getExtension(ProtocolKey.ClientInstanceKey.IDC)).toString();
    String pid = Objects.requireNonNull(event.getExtension(ProtocolKey.ClientInstanceKey.PID)).toString();
    String sys = Objects.requireNonNull(event.getExtension(ProtocolKey.ClientInstanceKey.SYS)).toString();
    // validate HEADER
    if (StringUtils.isBlank(idc) || StringUtils.isBlank(pid) || !StringUtils.isNumeric(pid) || StringUtils.isBlank(sys)) {
        responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse(replyMessageResponseHeader, ReplyMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getRetCode(), EventMeshRetCode.EVENTMESH_PROTOCOL_HEADER_ERR.getErrMsg()));
        asyncContext.onComplete(responseEventMeshCommand);
        return;
    }
    String bizNo = Objects.requireNonNull(event.getExtension(SendMessageRequestBody.BIZSEQNO)).toString();
    String uniqueId = Objects.requireNonNull(event.getExtension(SendMessageRequestBody.UNIQUEID)).toString();
    String producerGroup = Objects.requireNonNull(event.getExtension(SendMessageRequestBody.PRODUCERGROUP)).toString();
    // validate body
    if (StringUtils.isBlank(bizNo) || StringUtils.isBlank(uniqueId) || StringUtils.isBlank(producerGroup) || event.getData() == null) {
        responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse(replyMessageResponseHeader, ReplyMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getRetCode(), EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getErrMsg()));
        asyncContext.onComplete(responseEventMeshCommand);
        return;
    }
    // control flow rate limit
    if (!eventMeshHTTPServer.getMsgRateLimiter().tryAcquire(EventMeshConstants.DEFAULT_FASTFAIL_TIMEOUT_IN_MILLISECONDS, TimeUnit.MILLISECONDS)) {
        responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse(replyMessageResponseHeader, ReplyMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_HTTP_MES_SEND_OVER_LIMIT_ERR.getRetCode(), EventMeshRetCode.EVENTMESH_HTTP_MES_SEND_OVER_LIMIT_ERR.getErrMsg()));
        eventMeshHTTPServer.metrics.getSummaryMetrics().recordHTTPDiscard();
        asyncContext.onComplete(responseEventMeshCommand);
        return;
    }
    String content = new String(event.getData().toBytes(), StandardCharsets.UTF_8);
    if (content.length() > eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshEventSize) {
        httpLogger.error("Event size exceeds the limit: {}", eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshEventSize);
        responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse(replyMessageResponseHeader, ReplyMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PROTOCOL_BODY_ERR.getRetCode(), "Event size exceeds the limit: " + eventMeshHTTPServer.getEventMeshHttpConfiguration().eventMeshEventSize));
        asyncContext.onComplete(responseEventMeshCommand);
        return;
    }
    EventMeshProducer eventMeshProducer = eventMeshHTTPServer.getProducerManager().getEventMeshProducer(producerGroup);
    if (!eventMeshProducer.getStarted().get()) {
        responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse(replyMessageResponseHeader, ReplyMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_GROUP_PRODUCER_STOPED_ERR.getRetCode(), EventMeshRetCode.EVENTMESH_GROUP_PRODUCER_STOPED_ERR.getErrMsg()));
        asyncContext.onComplete(responseEventMeshCommand);
        return;
    }
    long startTime = System.currentTimeMillis();
    String replyTopic = EventMeshConstants.RR_REPLY_TOPIC;
    String origTopic = event.getSubject();
    final String replyMQCluster = event.getExtension(EventMeshConstants.PROPERTY_MESSAGE_CLUSTER).toString();
    if (!org.apache.commons.lang3.StringUtils.isEmpty(replyMQCluster)) {
        replyTopic = replyMQCluster + "-" + replyTopic;
    } else {
        responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse(replyMessageResponseHeader, ReplyMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_REPLY_MSG_ERR.getRetCode(), EventMeshRetCode.EVENTMESH_REPLY_MSG_ERR.getErrMsg()));
        asyncContext.onComplete(responseEventMeshCommand);
        return;
    }
    try {
        // body
        // omsMsg.setBody(replyMessageRequestBody.getContent().getBytes(EventMeshConstants.DEFAULT_CHARSET));
        event = CloudEventBuilder.from(event).withSubject(replyTopic).withExtension("msgtype", "persistent").withExtension(Constants.PROPERTY_MESSAGE_TIMEOUT, String.valueOf(EventMeshConstants.DEFAULT_TIMEOUT_IN_MILLISECONDS)).withExtension(EventMeshConstants.REQ_C2EVENTMESH_TIMESTAMP, String.valueOf(System.currentTimeMillis())).build();
        // String.valueOf(System.currentTimeMillis()));
        if (messageLogger.isDebugEnabled()) {
            messageLogger.debug("msg2MQMsg suc, bizSeqNo={}, topic={}", bizNo, replyTopic);
        }
    } catch (Exception e) {
        messageLogger.error("msg2MQMsg err, bizSeqNo={}, topic={}", bizNo, replyTopic, e);
        responseEventMeshCommand = asyncContext.getRequest().createHttpCommandResponse(replyMessageResponseHeader, ReplyMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_PACKAGE_MSG_ERR.getRetCode(), EventMeshRetCode.EVENTMESH_PACKAGE_MSG_ERR.getErrMsg() + EventMeshUtil.stackTrace(e, 2)));
        asyncContext.onComplete(responseEventMeshCommand);
        return;
    }
    final SendMessageContext sendMessageContext = new SendMessageContext(bizNo, event, eventMeshProducer, eventMeshHTTPServer);
    eventMeshHTTPServer.metrics.getSummaryMetrics().recordReplyMsg();
    CompleteHandler<HttpCommand> handler = httpCommand -> {
        try {
            if (httpLogger.isDebugEnabled()) {
                httpLogger.debug("{}", httpCommand);
            }
            eventMeshHTTPServer.sendResponse(ctx, httpCommand.httpResponse());
            eventMeshHTTPServer.metrics.getSummaryMetrics().recordHTTPReqResTimeCost(System.currentTimeMillis() - asyncContext.getRequest().getReqTime());
        } catch (Exception ex) {
        // ignore
        }
    };
    try {
        CloudEvent clone = CloudEventBuilder.from(sendMessageContext.getEvent()).withExtension(EventMeshConstants.REQ_EVENTMESH2MQ_TIMESTAMP, String.valueOf(System.currentTimeMillis())).build();
        sendMessageContext.setEvent(clone);
        eventMeshProducer.reply(sendMessageContext, new SendCallback() {

            @Override
            public void onSuccess(SendResult sendResult) {
                HttpCommand succ = asyncContext.getRequest().createHttpCommandResponse(replyMessageResponseHeader, SendMessageResponseBody.buildBody(EventMeshRetCode.SUCCESS.getRetCode(), EventMeshRetCode.SUCCESS.getErrMsg()));
                asyncContext.onComplete(succ, handler);
                long endTime = System.currentTimeMillis();
                eventMeshHTTPServer.metrics.getSummaryMetrics().recordReplyMsgCost(endTime - startTime);
                messageLogger.info("message|eventMesh2mq|RSP|SYNC|reply2MQCost={}|topic={}|origTopic={}|bizSeqNo={}|uniqueId={}", endTime - startTime, replyMQCluster + "-" + EventMeshConstants.RR_REPLY_TOPIC, origTopic, bizNo, uniqueId);
            }

            @Override
            public void onException(OnExceptionContext context) {
                HttpCommand err = asyncContext.getRequest().createHttpCommandResponse(replyMessageResponseHeader, SendMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_REPLY_MSG_ERR.getRetCode(), EventMeshRetCode.EVENTMESH_REPLY_MSG_ERR.getErrMsg() + EventMeshUtil.stackTrace(context.getException(), 2)));
                asyncContext.onComplete(err, handler);
                long endTime = System.currentTimeMillis();
                eventMeshHTTPServer.metrics.getSummaryMetrics().recordReplyMsgFailed();
                eventMeshHTTPServer.metrics.getSummaryMetrics().recordReplyMsgCost(endTime - startTime);
                messageLogger.error("message|eventMesh2mq|RSP|SYNC|reply2MQCost={}|topic={}|origTopic={}|bizSeqNo={}|uniqueId={}", endTime - startTime, replyMQCluster + "-" + EventMeshConstants.RR_REPLY_TOPIC, origTopic, bizNo, uniqueId, context.getException());
            }
        });
    } catch (Exception ex) {
        HttpCommand err = asyncContext.getRequest().createHttpCommandResponse(replyMessageResponseHeader, SendMessageResponseBody.buildBody(EventMeshRetCode.EVENTMESH_REPLY_MSG_ERR.getRetCode(), EventMeshRetCode.EVENTMESH_REPLY_MSG_ERR.getErrMsg() + EventMeshUtil.stackTrace(ex, 2)));
        asyncContext.onComplete(err);
        long endTime = System.currentTimeMillis();
        messageLogger.error("message|eventMesh2mq|RSP|SYNC|reply2MQCost={}|topic={}|origTopic={}|bizSeqNo={}|uniqueId={}", endTime - startTime, replyTopic, origTopic, bizNo, uniqueId, ex);
        eventMeshHTTPServer.metrics.getSummaryMetrics().recordReplyMsgFailed();
        eventMeshHTTPServer.metrics.getSummaryMetrics().recordReplyMsgCost(endTime - startTime);
    }
}
Also used : OnExceptionContext(org.apache.eventmesh.api.exception.OnExceptionContext) EventMeshConstants(org.apache.eventmesh.runtime.constants.EventMeshConstants) ProtocolAdaptor(org.apache.eventmesh.protocol.api.ProtocolAdaptor) CloudEvent(io.cloudevents.CloudEvent) IPUtils(org.apache.eventmesh.common.utils.IPUtils) LoggerFactory(org.slf4j.LoggerFactory) SendCallback(org.apache.eventmesh.api.SendCallback) AsyncContext(org.apache.eventmesh.runtime.core.protocol.http.async.AsyncContext) SendMessageRequestBody(org.apache.eventmesh.common.protocol.http.body.message.SendMessageRequestBody) EventMeshRetCode(org.apache.eventmesh.common.protocol.http.common.EventMeshRetCode) StringUtils(org.apache.commons.lang3.StringUtils) Constants(org.apache.eventmesh.common.Constants) ChannelHandlerContext(io.netty.channel.ChannelHandlerContext) SendMessageResponseBody(org.apache.eventmesh.common.protocol.http.body.message.SendMessageResponseBody) HttpRequestProcessor(org.apache.eventmesh.runtime.core.protocol.http.processor.inf.HttpRequestProcessor) ProtocolPluginFactory(org.apache.eventmesh.protocol.api.ProtocolPluginFactory) EventMeshUtil(org.apache.eventmesh.runtime.util.EventMeshUtil) EventMeshProducer(org.apache.eventmesh.runtime.core.protocol.http.producer.EventMeshProducer) SendResult(org.apache.eventmesh.api.SendResult) Logger(org.slf4j.Logger) ProtocolKey(org.apache.eventmesh.common.protocol.http.common.ProtocolKey) ReplyMessageRequestHeader(org.apache.eventmesh.common.protocol.http.header.message.ReplyMessageRequestHeader) ReplyMessageResponseHeader(org.apache.eventmesh.common.protocol.http.header.message.ReplyMessageResponseHeader) ReplyMessageResponseBody(org.apache.eventmesh.common.protocol.http.body.message.ReplyMessageResponseBody) ProtocolTransportObject(org.apache.eventmesh.common.protocol.ProtocolTransportObject) EventMeshHTTPServer(org.apache.eventmesh.runtime.boot.EventMeshHTTPServer) StandardCharsets(java.nio.charset.StandardCharsets) Objects(java.util.Objects) TimeUnit(java.util.concurrent.TimeUnit) CompleteHandler(org.apache.eventmesh.runtime.core.protocol.http.async.CompleteHandler) CloudEventBuilder(io.cloudevents.core.builder.CloudEventBuilder) RequestCode(org.apache.eventmesh.common.protocol.http.common.RequestCode) SendMessageContext(org.apache.eventmesh.runtime.core.protocol.http.producer.SendMessageContext) HttpCommand(org.apache.eventmesh.common.protocol.http.HttpCommand) RemotingHelper(org.apache.eventmesh.runtime.util.RemotingHelper) EventMeshProducer(org.apache.eventmesh.runtime.core.protocol.http.producer.EventMeshProducer) ProtocolTransportObject(org.apache.eventmesh.common.protocol.ProtocolTransportObject) OnExceptionContext(org.apache.eventmesh.api.exception.OnExceptionContext) ReplyMessageRequestHeader(org.apache.eventmesh.common.protocol.http.header.message.ReplyMessageRequestHeader) SendMessageContext(org.apache.eventmesh.runtime.core.protocol.http.producer.SendMessageContext) SendResult(org.apache.eventmesh.api.SendResult) HttpCommand(org.apache.eventmesh.common.protocol.http.HttpCommand) CloudEvent(io.cloudevents.CloudEvent) ReplyMessageResponseHeader(org.apache.eventmesh.common.protocol.http.header.message.ReplyMessageResponseHeader) SendCallback(org.apache.eventmesh.api.SendCallback)

Example 3 with ProtocolAdaptor

use of org.apache.eventmesh.protocol.api.ProtocolAdaptor in project incubator-eventmesh by apache.

the class SessionSender method initSyncRRCallback.

private RequestReplyCallback initSyncRRCallback(Header header, long startTime, long taskExecuteTime) {
    return new RequestReplyCallback() {

        @Override
        public void onSuccess(CloudEvent event) {
            String seq = header.getSeq();
            // TODO: How to assign values here
            // if (msg instanceof MessageExt) {
            // msg.putUserProperty(EventMeshConstants.BORN_TIMESTAMP, String.valueOf(((MessageExt) msg)
            // .getBornTimestamp()));
            // msg.putUserProperty(EventMeshConstants.STORE_TIMESTAMP, String.valueOf(((MessageExt) msg)
            // .getStoreTimestamp()));
            // }
            event = CloudEventBuilder.from(event).withExtension(EventMeshConstants.RSP_MQ2EVENTMESH_TIMESTAMP, String.valueOf(System.currentTimeMillis())).withExtension(EventMeshConstants.RSP_RECEIVE_EVENTMESH_IP, session.getEventMeshTCPConfiguration().eventMeshServerIp).build();
            session.getClientGroupWrapper().get().getEventMeshTcpMonitor().getTcpSummaryMetrics().getMq2eventMeshMsgNum().incrementAndGet();
            Command cmd;
            if (header.getCmd().equals(Command.REQUEST_TO_SERVER)) {
                cmd = Command.RESPONSE_TO_CLIENT;
            } else {
                messageLogger.error("invalid message|messageHeader={}|event={}", header, event);
                return;
            }
            event = CloudEventBuilder.from(event).withExtension(EventMeshConstants.RSP_EVENTMESH2C_TIMESTAMP, String.valueOf(System.currentTimeMillis())).build();
            String protocolType = Objects.requireNonNull(event.getExtension(Constants.PROTOCOL_TYPE)).toString();
            ProtocolAdaptor protocolAdaptor = ProtocolPluginFactory.getProtocolAdaptor(protocolType);
            Package pkg = new Package();
            // msg.getSystemProperties().put(EventMeshConstants.RSP_EVENTMESH2C_TIMESTAMP, String.valueOf(System.currentTimeMillis()));
            try {
                // pkg.setBody(EventMeshUtil.encodeMessage(msg));
                pkg = (Package) protocolAdaptor.fromCloudEvent(event);
                pkg.setHeader(new Header(cmd, OPStatus.SUCCESS.getCode(), null, seq));
                pkg.getHeader().putProperty(Constants.PROTOCOL_TYPE, protocolType);
            } catch (Exception e) {
                pkg.setHeader(new Header(cmd, OPStatus.FAIL.getCode(), null, seq));
            } finally {
                Utils.writeAndFlush(pkg, startTime, taskExecuteTime, session.getContext(), session);
            // session.write2Client(pkg);
            }
        }

        @Override
        public void onException(Throwable e) {
            messageLogger.error("exception occur while sending RR message|user={}", session.getClient(), new Exception(e));
        }
    };
}
Also used : Header(org.apache.eventmesh.common.protocol.tcp.Header) Command(org.apache.eventmesh.common.protocol.tcp.Command) ProtocolAdaptor(org.apache.eventmesh.protocol.api.ProtocolAdaptor) RequestReplyCallback(org.apache.eventmesh.api.RequestReplyCallback) Package(org.apache.eventmesh.common.protocol.tcp.Package) CloudEvent(io.cloudevents.CloudEvent)

Aggregations

ProtocolAdaptor (org.apache.eventmesh.protocol.api.ProtocolAdaptor)3 CloudEvent (io.cloudevents.CloudEvent)2 Command (org.apache.eventmesh.common.protocol.tcp.Command)2 Header (org.apache.eventmesh.common.protocol.tcp.Header)2 Package (org.apache.eventmesh.common.protocol.tcp.Package)2 CloudEventBuilder (io.cloudevents.core.builder.CloudEventBuilder)1 ChannelFuture (io.netty.channel.ChannelFuture)1 ChannelFutureListener (io.netty.channel.ChannelFutureListener)1 ChannelHandlerContext (io.netty.channel.ChannelHandlerContext)1 StandardCharsets (java.nio.charset.StandardCharsets)1 Objects (java.util.Objects)1 TimeUnit (java.util.concurrent.TimeUnit)1 StringUtils (org.apache.commons.lang3.StringUtils)1 RequestReplyCallback (org.apache.eventmesh.api.RequestReplyCallback)1 SendCallback (org.apache.eventmesh.api.SendCallback)1 SendResult (org.apache.eventmesh.api.SendResult)1 OnExceptionContext (org.apache.eventmesh.api.exception.OnExceptionContext)1 Constants (org.apache.eventmesh.common.Constants)1 ProtocolTransportObject (org.apache.eventmesh.common.protocol.ProtocolTransportObject)1 HttpCommand (org.apache.eventmesh.common.protocol.http.HttpCommand)1