Если вы спешите, обратитесь к инструкции по запуску этого образца .
В продолжение моего предыдущего блога о шаблоне претензий в этом блоге я использую канал сообщений с поддержкой AMQP для упрощения реализации шаблона претензий . Существует также еще один хороший блог о Spring Integration — хранилище полезных данных с помощью Claim-check , в котором рассказывается о шаблоне Claimcheck.
Шаблон Enterprise Integration Pattern выглядит следующим образом:
Вариант использования в этом блоге: сообщение отправляется в очередь, сообщение проверяется в хранилище сообщений vFabric Gemfire, а GUID извлекается и отправляется в Exchange vFabric RabbitMQ . Абоненты, слушающие этот Exchange , получат GUID, извлекут из хранилища сообщений и вызовут активатор службы.
В соответствии с разработкой Test First тестовый пример JUnit выглядит следующим образом:
@Test public void testIntegration() { String request = streamToString(getClass().getResourceAsStream( "/data/payload.xml")); Message<String> message = MessageBuilder.withPayload(request) .build(); channel.send(message); String outMessage = outChannel.receive(1000).getPayload().toString(); assertEquals(outMessage, request); }
В тестовом коде, поскольку нет преобразования, мы просто сравниваем входные данные с данными, выходящими из целевого канала.
Тестовая конфигурация выглядит как ниже,
<int:channel id="p2p-pollable-channel" /> <int:publish-subscribe-channel id="pub-sub-channel" /> <int:channel id="checkout-channel3" > <int:queue /> </int:channel> <int:claim-check-out message-store="simpleMessageStore" input-channel="pub-sub-channel" output-channel="checkout-channel3" remove-message="false" />
В основной конфигурации конфигурация vFabric RabbitMQ выглядит следующим образом:
<!-- A reference to the org.springframework.amqp.rabbit.connection.ConnectionFactory --> <rabbit:connection-factory id="connectionFactory" /> <!-- Creates a org.springframework.amqp.rabbit.core.RabbitAdmin to manage exchanges, queues and bindings --> <rabbit:admin connection-factory="connectionFactory" /> <int-amqp:channel id="p2p-pollable-channel" connection-factory="connectionFactory" /> <int-amqp:publish-subscribe-channel id="pub-sub-channel" connection-factory="connectionFactory" />
Наконец, процесс интеграции демонстрирует проверку претензий и проверку претензий, как показано ниже,
<int:claim-check-in message-store="simpleMessageStore" input-channel="p2p-pollable-channel" output-channel="pub-sub-channel" /> <int:claim-check-out message-store="simpleMessageStore" input-channel="pub-sub-channel" output-channel="checkout-channel1" remove-message="false" /> <int:claim-check-out message-store="simpleMessageStore" input-channel="pub-sub-channel" output-channel="checkout-channel2" remove-message="false" />
Если вы внимательно заметите, «p2p-pollable-channel» и «pub-sub-channel» — это физические очереди и обмены в vFabric RabbitMQ в соответствии с последним блогом по интеграции с Amqp Backed Spring с использованием vFabric Rabbitmq