Spring集成-消息偶尔不会得到处理,将进入空通道

问题描述 投票:0回答:1

我正在使用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();

它将对startegy类进行corelate,但随后直接将其转到null通道,我正在使用JdbcMessage存储。它不会进入发布策略类。 PFB日志-

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}]

某些消息正在处理中,但是大多数消息都将进入空通道。

spring-integration spring-integration-dsl
1个回答
0
投票

我删除了我的评论;你是对的;如果没有丢弃通道,则有关过期组的新消息将发送到nullChannel

expireGroupsUponCompletion设置为true使组到期,以便从具有相同相关标识的新消息开始一个新组。

© www.soinside.com 2019 - 2024. All rights reserved.