/** * Checks if this (response) message has all properties required * for successful delivery to the client. * * @return {@code true} if this message has {@code non-null} values for * properties <em>operation</em>, <em>replyToAddress</em> and * <em>correlationId</em>. */ public boolean hasResponseProperties() { return getOperation() != null && getReplyToAddress() != null && getProperty(MessageHelper.SYS_PROPERTY_CORRELATION_ID) != null; }
/** * Checks if this (response) message has all properties required * for successful delivery to the client. * * @return {@code true} if this message has {@code non-null} values for * properties <em>operation</em>, <em>replyToAddress</em> and * <em>correlationId</em>. */ public boolean hasResponseProperties() { return getOperation() != null && getReplyToAddress() != null && getProperty(MessageHelper.SYS_PROPERTY_CORRELATION_ID) != null; }
private void processRequestMessage(final Message<JsonObject> msg) { if (log.isTraceEnabled()) { log.trace("received request message: {}", msg.body().encodePrettily()); } final EventBusMessage request = EventBusMessage.fromJson(msg.body()); processRequest(request).recover(t -> { log.debug("cannot process request [operation: {}]: {}", request.getOperation(), t.getMessage()); final int status = ServiceInvocationException.extractStatusCode(t); return Future.succeededFuture(request.getResponse(status)); }).map(response -> { if (response.getReplyToAddress() == null) { log.debug("sending response as direct reply to request [operation: {}]", request.getOperation()); msg.reply(response.toJson()); } else if (response.hasResponseProperties()) { log.debug("sending response [operation: {}, reply-to: {}]", request.getOperation(), request.getReplyToAddress()); vertx.eventBus().send(request.getReplyToAddress(), response.toJson()); } else { log.warn("discarding response lacking correlation ID or operation"); } return null; }); }
private void processRequestMessage(final Message<JsonObject> msg) { if (log.isTraceEnabled()) { log.trace("received request message: {}", msg.body().encodePrettily()); } final EventBusMessage request = EventBusMessage.fromJson(msg.body()); final SpanContext spanContext = tracer.extract(Format.Builtin.TEXT_MAP, new MultiMapExtractAdapter(msg.headers())); request.setSpanContext(spanContext); processRequest(request).recover(t -> { log.debug("cannot process request [operation: {}]: {}", request.getOperation(), t.getMessage()); final int status = ServiceInvocationException.extractStatusCode(t); return Future.succeededFuture(request.getResponse(status)); }).map(response -> { if (response.getReplyToAddress() == null) { log.debug("sending response as direct reply to request [operation: {}]", request.getOperation()); msg.reply(response.toJson()); } else if (response.hasResponseProperties()) { log.debug("sending response [operation: {}, reply-to: {}]", request.getOperation(), request.getReplyToAddress()); vertx.eventBus().send(request.getReplyToAddress(), response.toJson()); } else { log.warn("discarding response lacking correlation ID or operation"); } return null; }); }
MessageHelper.SYS_PROPERTY_CORRELATION_ID, getProperty(MessageHelper.SYS_PROPERTY_CORRELATION_ID)); reply.setReplyToAddress(getReplyToAddress()); reply.setTenant(getTenant()); return reply;
MessageHelper.SYS_PROPERTY_CORRELATION_ID, getProperty(MessageHelper.SYS_PROPERTY_CORRELATION_ID)); reply.setReplyToAddress(getReplyToAddress()); reply.setTenant(getTenant()); return reply;