Spring Integration - сообщения время от времени не обрабатываются и собираются на нулевой канал - PullRequest
0 голосов
/ 29 января 2020

Я использую агрегатор SI и использую собственный агрегатор и стратегию выпуска. PFB фрагмент

        return IntegrationFlows.from("uaDefaultChannel").wireTap(UA_WIRE_TAP_CHNL).transform(eventHandler, "parseEvent")
                .aggregate(a -> a.correlationStrategy(corStrgy, "getCorrelationKey").releaseStrategy(g -> {
                    System.out.println("time entered"+System.currentTimeMillis()); 
                    boolean eonExists = g.getMessages().stream()
                            .anyMatch(eon -> ((FlightModel) eon.getPayload()).getEstGmtOnDtm() != null);
                    if (eonExists) {
                        boolean einExists = g.getMessages().stream()
                                .anyMatch(ein -> ((FlightModel) ein.getPayload()).getEstGmtInDtm() != null);
                        if (einExists) {
                            return true;
                        }
                    }
                    return false;
                }).messageStore(this.messageStore)).handle(uaImpl, "process").get();

Он собирается связать класс стартерии, но затем он напрямую идет в нулевой канал, я использую хранилище JdbcMessage. Это не входит в класс h Release Strategy. PFB the log -

2020-01-28T13:18:55.472-0600 DEBUG Executing prepared SQL query
2020-01-28T13:18:55.472-0600 DEBUG Executing prepared SQL statement [SELECT COMPLETE, LAST_RELEASED_SEQUENCE, CREATED_DATE, UPDATED_DATE from INT_MESSAGE_GROUP where GROUP_KEY = ? and REGION=?]
2020-01-28T13:18:55.472-0600 DEBUG Fetching JDBC Connection from DataSource
2020-01-28T13:18:55.473-0600 DEBUG message sent to null channel: GenericMessage [payload=Flight [UA/1016/20200128/IAH0-CUN: status=null, EON=null(GMT: null), EIN=null(GMT: 2020-01-28 20:15:43), tail=null], headers={jms_redelivered=false, jms_destination=Queue[UAL.OPS.NOC.FLIGHTAWARE.FLIFO.1], id=03accd44-2e22-eb3d-cf0a-2c291f8562b6, priority=4, jms_timestamp=1580239135458, jms_messageId=ID:DNDCEM01.309B5DA0C7C1C27739:181824, timestamp=1580239135471}]
2020-01-28T13:18:55.473-0600 DEBUG postSend (sent=true) on channel 'uaEventFlow.channel#0', message: GenericMessage [payload=Flight [UA/1016/20200128/IAH0-CUN: status=null, EON=null(GMT: null), EIN=null(GMT: 2020-01-28 20:15:43), tail=null], headers={jms_redelivered=false, jms_destination=Queue[UAL.OPS.NOC.FLIGHTAWARE.FLIFO.1], id=03accd44-2e22-eb3d-cf0a-2c291f8562b6, priority=4, jms_timestamp=1580239135458, jms_messageId=ID:DNDCEM01.309B5DA0C7C1C27739:181824, timestamp=1580239135471}]

Некоторые сообщения обрабатываются, но большинство сообщений отправляются на нулевой канал.

1 Ответ

1 голос
/ 29 января 2020

Я удалил свой комментарий; ты прав; новые сообщения для групп с истекшим сроком действия будут отправляться на nullChannel, если канал сброса отсутствует.

Установите expireGroupsUponCompletion на true для истечения срока действия групп, чтобы новая группа начиналась с нового сообщения с тот же идентификатор корреляции.

...