聚合时收到重复消息:mule esb

聚合时收到重复消息:mule esb,mule,mule-studio,mule-component,Mule,Mule Studio,Mule Component,合并多个文件时遇到问题。我存储两个不同的文件。并将这两个文件合并为一个。有一段时间我收到了重复的信息。或者某个时候某个文件被删除了。 下面是我的流程 <flow name="CombineFiles" > <file:inbound-endpoint path="Custom" responseTimeout="10000" doc:name="File" moveToDirectory="BackUp"/> <file:file-t

合并多个文件时遇到问题。我存储两个不同的文件。并将这两个文件合并为一个。有一段时间我收到了重复的信息。或者某个时候某个文件被删除了。 下面是我的流程

<flow name="CombineFiles" >
        <file:inbound-endpoint path="Custom" responseTimeout="10000" doc:name="File" moveToDirectory="BackUp"/>
        <file:file-to-string-transformer doc:name="File to String"/>
        <scripting:component doc:name="Groovy">
            <scripting:script engine="Groovy"><![CDATA[long now = new java.util.Date().getTime(); 
                long mod = now % 2000; 
                message.setCorrelationId(String.valueOf(now - mod));
                message.setCorrelationGroupSize(100);
                return message;
            ]]></scripting:script>
        </scripting:component> 

        <collection-aggregator  failOnTimeout="false" doc:name="Collection Aggregator" timeout="3000"/>
        <combine-collections-transformer doc:name="Combine Collections"/>
        <logger message="FINAL #[payload]" level="INFO" doc:name="Logger"/>
        <object-to-string-transformer doc:name="Object to String"/>
        <file:outbound-endpoint path="Result" outputPattern="result1" responseTimeout="10000" doc:name="File"/>

    </flow> 

有一段时间,我两次收到文件1的消息。或者有一段时间只收到一条文件消息。我想合并两个文件。我的流程有什么问题吗?

放置之后

 <set-payload value="#[message.payload[0]] #[message.payload[1]]" doc:name="Set Payload"/>

检查你的问题是否得到解决。这里我尝试的是显式地设置来自集合聚合器的消息。。。
但请不要这样做,如果有超过2个文件,这可能不起作用。。但是由于您的需求是在这里使用2个文件作为输入。。这很好

如果要合并2个文件,为什么要将相关组大小设置为100?而且,我认为相关id设置得不好,因为它只取决于文件到达时间。尊敬的Marcos,在2秒内,文件的数量是基于我设置的相关id和大小而来的。但是如果我想集成2个文件,那么我必须以什么方式设置相关id?如果你想合并2个文件,组大小应该是2。如果该值更大,则聚合器将在这两个文件到达后继续等待,事实上,聚合器超时为3秒,而您的相关id mods为2秒。但是,我认为时间戳模式不是一个好方法,因为文件可以在两秒窗口结束时到达。谢谢回复。。这不是每次都有效,因为。。。例如:在文件1中,我有类似“这是文件1”的内容,在第二个文件中,我有类似“这是文件2”的内容。。。有一次我得到了这个输出“这是文件2这是文件2这是文件1”有一次我得到了“这是文件2这是文件1”同样…如果我设置了有效负载,那么我得到了“这是文件2这是文件2”它没有显示我文件1的内容..你是否以我提到的相同方式放置了设置的有效负载??比如
#[message.payload[0]]#[message.payload[1]]
?您需要将其作为
message.payload[0]
message.payload[1]