2016-08-29 3 views
1

Это текущий код ..Как я могу получить полезную нагрузку после ответа клиенту?

@Bean 
public IntegrationFlow flowForHandlingPlainEncryptHistory() { 
    return IntegrationFlows.from(InputWithPlainEncryptHistory()) 
      .handle(ENCRYPT_HISTORY_SERVICE, EXTRACT_ENCRYPT_HISTORY) 
      .channel(outputWithPlainStringOfXml()).get(); 
} 

Методы, которые работают в ENCRYPT_HISTORY
вставку в БД и возвращает успех.

Однако, для того чтобы улучшить скорость
Безусловный успех возврата, а затем попробуйте ВСТАВИТЬ БД.

@Bean 
public IntegrationFlow flowForHandlingPlainEncryptHistory() { 
    return IntegrationFlows.from(InputWithPlainEncryptHistory()) 
      .handle(ENCRYPT_HISTORY_SERVICE, "extractEncryptHistoryReturn") 
      .channel(outputWithPlainStringOfXml() 
      .handle(ENCRYPT_HISTORY_SERVICE, "extractEncryptHistoryInsert").get(); 
} 

@Override 
public Object extractEncryptHistoryReturn(Object payload) throws Exception { 
    log.debug("[INFO] extractEncryptHistoryReturn payload : {}", payload.toString()); 

    Map<String, Object> result = initResult(); 

    result.put(Constant.KEY_NAME_RESULT_CODE, Constant.CODE_SUCCESS); 
    result.put(Constant.KEY_NAME_RESULT_MSG, Constant.MSG_SUCCESS); 

    return result; 
} 

@Override 
@Transactional 
public void extractEncryptHistoryInsert(Object payload) throws Exception { 
    log.debug("[INFO] extractEncryptHistoryInsert payload : {}", payload.toString()); 

    Map<String, Object> params = initParam(payload); 

    try { 
     long headerInfoSeq = insertHeaderInfo(params); 
     insertHeaderAclList(headerInfoSeq, (String) params.get("ACL_COUNT"), (String) params.get("ACL_LIST")); 
    } catch (Exception e) { 
     log.debug("[ERROR] extractEncryptHistory : Insert errors in the header information and acl list. {}", e.toString()); 
    } 
} 

extractEncryptHistoryInsert полезной нагрузки подходит к методу не от первой полезной нагрузки.

Что я могу сделать, чтобы исправить это?

ответ

0

Вам нужен канал подписки на публикацию, при этом каждый обработчик является подписчиком на него. Добавьте исполнитель задачи, чтобы два обработчика выполнялись параллельно.

Вы можете либо иметь два IntegrationFlow s, начинающихся с того же канала, либо использовать подпотоки в одном бозовом IntegrationFlow.

Смежные вопросы