private Map<String, String> correlationHeaders(Map<String, String> headers) { Map<String, String> m = headers.entrySet() .stream() .filter(e -> e.getKey().startsWith(CommandMessageHeaders.COMMAND_HEADER_PREFIX)) .collect(Collectors.toMap(e -> CommandMessageHeaders.inReply(e.getKey()), Map.Entry::getValue)); m.put(ReplyMessageHeaders.IN_REPLY_TO, headers.get(Message.ID)); return m; }
private Map<String, String> correlationHeaders(Map<String, String> headers) { Map<String, String> m = headers.entrySet() .stream() .filter(e -> e.getKey().startsWith(CommandMessageHeaders.COMMAND_HEADER_PREFIX)) .collect(Collectors.toMap(e -> CommandMessageHeaders.inReply(e.getKey()), Map.Entry::getValue)); m.put(ReplyMessageHeaders.IN_REPLY_TO, headers.get(Message.ID)); return m; }
private Map<String, String> correlationHeaders(Map<String, String> headers) { Map<String, String> m = headers.entrySet() .stream() .filter(e -> e.getKey().startsWith(CommandMessageHeaders.COMMAND_HEADER_PREFIX)) .collect(Collectors.toMap(e -> CommandMessageHeaders.inReply(e.getKey()), Map.Entry::getValue)); m.put(ReplyMessageHeaders.IN_REPLY_TO, headers.get(Message.ID)); return m; }
public CompletableFuture<Object> sendReply(DispatchedEvent<Event> de) { SagaReplyRequestedEvent event = (SagaReplyRequestedEvent) de.getEvent(); Message reply = CommandHandlerReplyBuilder.withSuccess(); messageProducer.send(channelMapping.transform(event.getCorrelationHeaders().get(CommandMessageHeaders.inReply(CommandMessageHeaders.REPLY_TO))), MessageBuilder .withMessage(reply) .withExtraHeaders("", event.getCorrelationHeaders()) .build()); return CompletableFuture.completedFuture(null); } }
private void handleReply(Message message) { if (!isReplyForThisSagaType(message)) return; logger.debug("Handle reply: {}", message); String sagaId = message.getRequiredHeader(SagaReplyHeaders.REPLY_SAGA_ID); String sagaType = message.getRequiredHeader(SagaReplyHeaders.REPLY_SAGA_TYPE); SagaInstance sagaInstance = sagaInstanceRepository.find(sagaType, sagaId); Data sagaData = SagaDataSerde.deserializeSagaData(sagaInstance.getSerializedSagaData()); message.getHeader(SagaReplyHeaders.REPLY_LOCKED).ifPresent(lockedTarget -> { String destination = message.getRequiredHeader(CommandMessageHeaders.inReply(CommandMessageHeaders.DESTINATION)); sagaInstance.addDestinationsAndResources(singleton(new DestinationAndResource(destination, lockedTarget))); }); String currentState = sagaInstance.getStateName(); logger.info("Current state={}", currentState); SagaActions<Data> actions = getStateDefinition().handleReply(currentState, sagaData, message); logger.info("Handled reply. Sending commands {}", actions.getCommands()); processActions(sagaId, sagaInstance, sagaData, actions); }
String destination = message.getRequiredHeader(CommandMessageHeaders.inReply(CommandMessageHeaders.DESTINATION)); sagaInstance.addDestinationsAndResources(singleton(new DestinationAndResource(destination, lockedTarget))); });