第二次聚合文件在Mule 3.2中不起作用

第二次聚合文件在Mule 3.2中不起作用,mule,Mule,我已经从mule 3.2.1升级到3.3.1,我面临以下问题。 我使用自定义聚合器和自定义转换器聚合多个文件以进行处理。问题是,在第一次聚合之后,当我删除另一组文件时,只调用transformer类,没有其他组件得到执行。控制台上也没有错误。 当我重新启动mule时,这个过程也只是第一次执行 我的变压器等级是: 第二次执行后 对于每一组文件,关联id是文件的名称,它在不同的文件集中是唯一的。任何人都不能告诉我代码有什么问题。您不能重用相关id,因为它保存在对象存储中(这解释了为什么重新启动Mul

我已经从mule 3.2.1升级到3.3.1,我面临以下问题。 我使用自定义聚合器和自定义转换器聚合多个文件以进行处理。问题是,在第一次聚合之后,当我删除另一组文件时,只调用transformer类,没有其他组件得到执行。控制台上也没有错误。 当我重新启动mule时,这个过程也只是第一次执行

我的变压器等级是:

第二次执行后


对于每一组文件,关联id是文件的名称,它在不同的文件集中是唯一的。任何人都不能告诉我代码有什么问题。

您不能重用相关id,因为它保存在对象存储中(这解释了为什么重新启动Mule时它会再次工作)。

您必须为每个聚合组使用不同的关联id。

您不能重用关联id,因为它保存在对象存储中(这解释了为什么重新启动Mule时它会再次工作)。

您必须为每个聚合组使用不同的correlationid。

在custom transformer中,我将correlationid设置为文件名。例如:我有两个文件要聚合abcdef12.csv和abcdef22.csv,我将关联id设置为abcdef,大小为2。这对于每一组文件都是不同的。因此,在每个过程开始时,都会调用自定义转换器并设置相关id。是的,您不能重复使用相关id,但是您可以每次将salt(基于时间窗口的值)添加到相关id并使其唯一。在自定义转换器中,我将correlationid设置为文件名。例如:我有两个文件要聚合abcdef12.csv和abcdef22.csv,我将关联id设置为abcdef,大小为2。这对于每一组文件都是不同的。因此,在每个流程开始时,都会调用自定义转换器并设置相关id。是的,您不能重用相关id,但可以添加salt(基于时间窗口的值)每次设置相关id并使其唯一..我不明白是否需要自定义聚合器:转换器设置正确的相关id和组大小,因此,一个标准的
收集聚合器应该能够对消息进行分组。我不理解在这里需要一个
自定义聚合器
:转换器设置了正确的相关ID和组大小,因此一个标准的
收集聚合器
应该能够对消息进行分组。
public class FileCorrelationTransformer extends AbstractMessageTransformer {

      @Override
      public Object transformMessage(MuleMessage message, String arg1)
                  throws TransformerException {
            System.out.println("FileCorelationTransformer called");
            System.out.println("=============================");
            System.out.println("Extract Name = "
                        + message.getOutboundProperty("originalFilename"));

            final String fileName = message.getOutboundProperty("filename");

            final String extractName = Generate.extractName(fileName);
            final ArrayList<ExtractVO> extractVOs = ExtractDAO.getInstance()
                        .load(extractName);

            System.out.println("Group Size: " + extractVOs.get(0).getNoOfParts());
            System.out.println("=============================");
            message.setCorrelationId(extractName);
            message.setCorrelationGroupSize(extractVOs.get(0).getNoOfParts());
            return message;
      }
}
public class FileCollectionAggregator extends AbstractAggregator {

      @Override
      protected EventCorrelatorCallback getCorrelatorCallback(
                  MuleContext muleContext) {
            return new CollectionCorrelatorCallback(muleContext, false, "") {
                  @Override
                  public MuleEvent aggregateEvents(EventGroup events)
                              throws AggregationException {
                        CopyOnWriteArrayList<File> list = new CopyOnWriteArrayList<File>();
                        try {
                              for (Iterator<MuleEvent> iterator = events.iterator(); iterator
                                          .hasNext();) {
                                    MuleEvent event = iterator.next();
                                    try {
                                          list.add(new File(event.transformMessageToString()));
                                    } catch (TransformerException e) {
                                          throw new AggregationException(events, null, e);
                                    }
                              }
                        } catch (ObjectStoreException e) {
                              throw new AggregationException(events, null, e);
                        }
                        return new DefaultMuleEvent(new DefaultMuleMessage(list,
                                    muleContext), events.getMessageCollectionEvent());
                  }
            };
      }
}
<vm:connector name="ConnectorSinglePartMonthly"
            dynamicNotification="true" doc:name="VM" />

      <custom-transformer
            class="com.transformers.FileCorrelationTransformer" name="fileMultiPartCorrelationTransformer"
            doc:name="Java" />

      <flow name="CountTP" doc:name="CountTP">
            <file:inbound-endpoint path="c:/test/input"
                  connector-ref="fileConnector" doc:name="Count CSV">
                  <file:filename-regex-filter pattern="UGJERT[0-9]*.csv"
                        caseSensitive="false" />
            </file:inbound-endpoint>
            <vm:outbound-endpoint connector-ref="ConnectorMultiPartMonthly"
                  path="monthlyMultiPartFiles" transformer-refs="fileMultiPartCorrelationTransformer"
                  doc:name="TP Multi VM Out" />
            <logger message="Done with the Flow!" doc:name="Logger" />
      </flow>

      <flow name="MultiPartMonthlyFlow" doc:name="MultiPartMonthlyFlow">
            <vm:inbound-endpoint connector-ref="ConnectorMultiPartMonthly"
                  path="monthlyMultiPartFiles" doc:name="TP Multi Monthly VM In" />

            <custom-aggregator class="com.routing.FileCollectionAggregator"
                  doc:name="Custom Aggregator" />

              <component doc:name="Csv Reader">
                   <prototype-object
                        class="com.utility.CsvReader" />
                </component>

      </flow>
INFO  2013-07-19 16:51:02,296 [[test].fileConnector.receiver.05] org.mule.transport.file.FileMessageReceiver: Lock obtained on file: C:\test\input\UGJERT12.csv
INFO  2013-07-19 16:51:02,311 [[test].fileConnector.receiver.05] org.mule.transport.file.FileMessageReceiver: Lock obtained on file: C:\test\input\UGJERT22.csv
FileCorelationTransformer called
FileCorelationTransformer called
=============================
=============================
Extract Name = UGJERT12.csv
Extract Name = UGJERT22.csv
Group Size: 2
=============================
Group Size: 2
=============================
INFO  2013-07-19 16:51:02,421 [[test].ConnectorMultiPartMonthly.dispatcher.01] org.mule.lifecycle.AbstractLifecycleManager: Initialising: 'ConnectorMultiPartMonthly.dispatcher.6508195'. Object is: VMMessageDispatcher
INFO  2013-07-19 16:51:02,421 [[test].ConnectorMultiPartMonthly.dispatcher.02] org.mule.lifecycle.AbstractLifecycleManager: Initialising: 'ConnectorMultiPartMonthly.dispatcher.29350820'. Object is: VMMessageDispatcher
INFO  2013-07-19 16:51:02,421 [[test].ConnectorMultiPartMonthly.dispatcher.01] org.mule.lifecycle.AbstractLifecycleManager: Starting: 'ConnectorMultiPartMonthly.dispatcher.6508195'. Object is: VMMessageDispatcher
INFO  2013-07-19 16:51:02,421 [[test].ConnectorMultiPartMonthly.dispatcher.02] org.mule.lifecycle.AbstractLifecycleManager: Starting: 'ConnectorMultiPartMonthly.dispatcher.29350820'. Object is: VMMessageDispatcher

Process execution starts and extractName is = UGJERT
INFO  2013-07-19 16:53:18,530 [[test].fileConnector.receiver.09] org.mule.transport.file.FileMessageReceiver: Lock obtained on file: C:\test\input\UGJERT12.csv
INFO  2013-07-19 16:53:18,546 [[test].fileConnector.receiver.09] org.mule.transport.file.FileMessageReceiver: Lock obtained on file: C:\test\input\UGJERT22.csv
FileCorelationTransformer called
=============================
Extract Name = UGJERT12.csv
Group Size: 2
=============================
FileCorelationTransformer called
=============================
Extract Name = UGJERT22.csv
Group Size: 2
=============================