Skip to content

Instantly share code, notes, and snippets.

@quotidian-ennui
Created September 14, 2017 14:49
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save quotidian-ennui/17c265b6c71e0d4fdb0009af54c35df0 to your computer and use it in GitHub Desktop.
Save quotidian-ennui/17c265b6c71e0d4fdb0009af54c35df0 to your computer and use it in GitHub Desktop.
<adapter>
<unique-id>${adapter.unique.id}</unique-id>
<heartbeat-event-interval>
<unit>HOURS</unit>
<interval>24</interval>
</heartbeat-event-interval>
<message-error-handler class="standard-processing-exception-handler">
<unique-id>S3+HTTP_500</unique-id>
<always-handle-exception>true</always-handle-exception>
<processing-exception-service class="service-list">
<services>
<clone-message-service-list>
<services>
<service-list>
<services>
<generate-unique-metadata-value-service>
<metadata-key>error-id</metadata-key>
<generator class="guid-generator"/>
</generate-unique-metadata-value-service>
<encoding-service>
<encoder class="mime-encoder"/>
</encoding-service>
<amazon-s3-service>
<connection class="shared-connection">
<lookup-name>shared-amazon-s3</lookup-name>
</connection>
<operation class="amazon-s3-upload">
<bucket-name class="constant-data-input-parameter">
<value>${amazon.s3.bucket}</value>
</bucket-name>
<key class="constant-data-input-parameter">
<value>interlok/%message{error-id}</value>
</key>
<object-metadata/>
</operation>
</amazon-s3-service>
</services>
</service-list>
</services>
</clone-message-service-list>
<exception-report-service>
<exception-serializer class="exception-as-json-with-stacktrace"/>
</exception-report-service>
<standalone-producer>
<producer class="jetty-standard-response-producer">
<status-provider class="http-configured-status">
<status>INTERNAL_ERROR_500</status>
</status-provider>
<content-type-provider class="http-configured-content-type-provider">
<mime-type>application/json</mime-type>
</content-type-provider>
<send-payload>true</send-payload>
</producer>
</standalone-producer>
</services>
</processing-exception-service>
</message-error-handler>
<failed-message-retrier class="default-failed-message-retrier">
<unique-id>FailedMessageRetrier</unique-id>
<standalone-consumer>
<consumer class="fs-consumer">
<destination class="configured-consume-destination">
<destination>${adapter.retry.dir.url}</destination>
<configured-thread-name>MESSAGE_RETRY</configured-thread-name>
</destination>
<poller class="quartz-cron-poller">
<cron-expression>0 */2 * * * ?</cron-expression>
</poller>
<create-dirs>true</create-dirs>
<encoder class="mime-encoder">
<retain-unique-id>true</retain-unique-id>
</encoder>
</consumer>
</standalone-consumer>
</failed-message-retrier>
<shared-components>
<connections>
<jetty-embedded-connection>
<unique-id>shared-jetty</unique-id>
</jetty-embedded-connection>
<amazon-s3-connection>
<unique-id>shared-amazon-s3</unique-id>
<authentication class="aws-keys-authentication">
<access-key>${amazon.access.key}</access-key>
<secret-key>${amazon.secret.key}</secret-key>
</authentication>
</amazon-s3-connection>
</connections>
</shared-components>
<channel-list>
<channel>
<unique-id>HTTP_Channel</unique-id>
<consume-connection class="shared-connection">
<lookup-name>shared-jetty</lookup-name>
</consume-connection>
<workflow-list>
<standard-workflow>
<unique-id>AlwaysFail</unique-id>
<consumer class="jetty-message-consumer">
<unique-id>/fail</unique-id>
<destination class="configured-consume-destination">
<destination>/fail/*</destination>
<configured-thread-name>fail</configured-thread-name>
</destination>
<parameter-handler class="jetty-http-parameters-as-metadata"/>
<header-handler class="jetty-http-headers-as-metadata">
<header-prefix>Fail_</header-prefix>
</header-handler>
</consumer>
<service-collection class="service-list">
<services>
<throw-exception-service>
<exception-generator class="configured-exception">
<message>AlwaysFail</message>
</exception-generator>
</throw-exception-service>
<!-- We'll never get to this -->
<standalone-producer>
<producer class="jetty-standard-response-producer">
<status-provider class="http-configured-status">
<status>ACCEPTED_202</status>
</status-provider>
<response-header-provider class="jetty-no-response-headers"/>
<content-type-provider class="http-raw-content-type-provider">
<content-type>application/json</content-type>
</content-type-provider>
<send-payload>true</send-payload>
</producer>
</standalone-producer>
</services>
</service-collection>
</standard-workflow>
<standard-workflow>
<unique-id>CopyToRetry</unique-id>
<consumer class="jetty-message-consumer">
<unique-id>/retry</unique-id>
<destination class="configured-consume-destination">
<destination>/retry/*</destination>
<configured-thread-name>CopyToRetry</configured-thread-name>
</destination>
<parameter-handler class="jetty-http-parameters-as-metadata"/>
<header-handler class="jetty-http-headers-as-metadata"/>
</consumer>
<service-collection class="service-list">
<services>
<log-message-service>
<include-payload>true</include-payload>
</log-message-service>
<!-- assume http://localhost:8080/retry?errorId=XXXX -->
<amazon-s3-service>
<connection class="shared-connection">
<lookup-name>shared-amazon-s3</lookup-name>
</connection>
<operation class="amazon-s3-download">
<bucket-name class="constant-data-input-parameter">
<value>${amazon.s3.bucket}</value>
</bucket-name>
<key class="constant-data-input-parameter">
<value>interlok/%message{errorId}</value>
</key>
</operation>
</amazon-s3-service>
<standalone-producer>
<producer class="fs-producer">
<destination class="configured-produce-destination">
<destination>${adapter.retry.dir.url}</destination>
</destination>
<fs-worker class="fs-overwrite-file"/>
<create-dirs>true</create-dirs>
</producer>
</standalone-producer>
<standalone-producer>
<producer class="jetty-standard-response-producer">
<status-provider class="http-configured-status">
<status>ACCEPTED_202</status>
</status-provider>
<response-header-provider class="jetty-no-response-headers"/>
<content-type-provider class="http-raw-content-type-provider">
<content-type>text/plain</content-type>
</content-type-provider>
<send-payload>false</send-payload>
</producer>
</standalone-producer>
</services>
</service-collection>
</standard-workflow>
</workflow-list>
</channel>
</channel-list>
</adapter>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment