Spring Integration - Добавление пользовательских заголовков в сообщение - PullRequest
0 голосов
/ 16 февраля 2020

Я использую фильтр Spring Integration для структурной проверки входящей полезной нагрузки, и если проверка не проходит, я хочу добавить несколько пользовательских заголовков к исходному сообщению.

Код фильтра ниже:

@Service("structureValidationFilter")
public class StructureValidationFilter implements MessageSelector {

@Override
public boolean accept(Message<?> message) {
    // TODO Auto-generated method stub
    boolean status=true;

    if(message.getPayload() instanceof CFKRequestBody) {
        CFKRequestBody body=(CFKRequestBody)message.getPayload();
        if(!body.getInitiatingPartyId().equalsIgnoreCase("BPKV")) {
            message = MutableMessageBuilder.fromMessage(message).
                    setHeader("BPKV_ERROR_CODE", "Ïnvalid Initiating part id").
                    setHeader("HTTP_STATUS", "400").build();

            return false;   
        }

    }
    return status;
}

}

Но заголовки не заполняются в Послании. Невозможно увидеть заголовки, добавленные в следующем компоненте. Что я тут не так делаю.

1 Ответ

1 голос
/ 16 февраля 2020

Нельзя заменить параметр и ожидать, что он будет распространен на следующий компонент; Java не работает таким образом; Ваше новое сообщение просто отбрасывается.

Используйте активатор службы вместо фильтра и верните новое сообщение, или null, который является сигналом для завершения потока в этой точке.

...