Можно ли упорядоченно управлять потоками или параллельной обработкой, например, FIFO? - PullRequest
0 голосов
/ 07 октября 2019

заранее спасибо, у меня есть ситуация, когда данные, которые я обрабатываю, расположены в хронологическом порядке, что означает, что многие файлы обрабатываются последовательно, последовательно, потому что последняя запись метки времени из одного обработанного файла данных должна быть впереди следующейзапись метки времени файла. например, файл 1, последний раз, 5 октября 2019 г. 12: 30: 30.333 и следующая первая временная метка должна следовать .. 5 октября 2019 г. 12: 40: 30.345 ...

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

Я собираюсь использовать многопоточность и / или параллельную обработку верблюдов, чтобы можно было использовать и обрабатывать более 1 файла одновременно. Но я не могу определить, если или как я могу расставить приоритеты или заказать сообщения?

Можно ли управлять сообщениями / выполненными или отправленными сообщениями, затем перенаправленными в / из очереди SEDA или JMS / ActiveMQ, как FIFO или как? я могу получить сообщение из SEDA или ActiveMQ или с помощью API потоков, чтобы обеспечить отправку данных в конечную точку в порядке упорядочения времени? Мне нужно иметь возможность адресовать сообщения по порядку, но обрабатывать их одновременно ??? спасибо за вашу помощь и знания. Я искал, но не могу найти, если это возможно.

есть 2 точки, где мне нужно поточить, при обогащении и затем снова при отправке в конечную точку HTTP. как обеспечить отправку данных на http в порядке, используя темы или ..

    <route autoStartup="true" id="core.predix.tkndependencyCheckerRoute">
        <from id="_from2" uri="timer://tkndbAvailable?fixedRate=true&amp;period=30000"/>
        <process id="_process2" ref="tkndbAvailableProcessor"/>
    </route>
    <!-- route will not turn on until token db is available -->
    <route autoStartup="false" id="core.predix.upload.route">
        <from id="_from6" uri="{{uploadEntranceEndpoint}}"/>
        <process id="_process17" ref="customerTokenProcessor"/>
        <process id="_process16" ref="customerEntitesProcessor"/>
        <process id="_process19" ref="uploadProcessor"/>
        <setHeader headerName="CamelHttpUri" id="_setHeader4">
            <simple>${header.UPLOADURL}?throwExceptionOnFailure=false</simple>
        </setHeader>
        <setHeader headerName="CamelHttpMethod" id="_setHeader5">
            <constant>POST</constant>
        </setHeader>
        <throttle id="throttle_upload_posts" timePeriodMillis="500">
            <constant>1</constant>
            <to id="_to9" uri="http4://apm-timeseries-query-svc-prod.app-api.aws-usw02-pr.predix.io:443/v2/time_series/upload?throwExceptionOnFailure=false"/>
        </throttle>
        <choice id="_choice1">
            <when id="_when1">
                <simple>${header.CamelHttpResponseCode} in "200,201"</simple>
                <log id="logResponse" loggingLevel="INFO" message="HTTP Successful POST - Return Code: ${header.CamelHttpResponseCode}"/>
            </when>
            <otherwise id="_otherwise1">
                <log id="logHttpError" loggingLevel="ERROR" message="HTTP FAILURE - HTTP Response Code: ${header.CamelHttpResponseCode}"/>
                <log id="logHttpError2" loggingLevel="ERROR" message="HTTP FAILURE - Response: ${header.CamelHttpResponseText}"/>
            </otherwise>
        </choice>
    </route>
...