Andriy Kryvtsun
Andriy Kryvtsun

Reputation: 3354

JPA outbound channel adapter config in Spring Integration Java DSL

I see there is still no JPA high-level support in Spring Integration Java DSL
Example Spring integration DSL for JPA Inbound Channel adapter

But how it is possible to configure JPA outbound channel adapter on low level?

E.g. to create Java DSL config like this in XML

<int-jpa:outbound-channel-adapter id="moduleMessagePersister" channel="inputPersisterChannel" persist-mode="MERGE" entity-manager-factory="entityManagerFactory">
    <int-jpa:transactional transaction-manager="transactionManager"/>
</int-jpa:outbound-channel-adapter>

Upvotes: 2

Views: 1380

Answers (1)

Artem Bilan
Artem Bilan

Reputation: 121550

I remember as promised a contribution :-).

Re. <int-jpa:outbound-channel-adapter>:

  1. Any such an XML component is a Consumer Endpoint for the particular MessageHandler.

  2. See the latest changes in the Core project to help users to determine what to use for the Java & Annotation configuration. And therefore for Java DSL as well: https://jira.spring.io/browse/INT-3964

So, for this particular element we have:

<xsd:documentation>
    Configures a Consumer Endpoint for the
    'org.springframework.integration.jpa.outbound.JpaOutboundGatewayFactoryBean' (one-way)
    updating a database using the Java Persistence API (JPA).
</xsd:documentation>

Therefore we have to configure something like

@Bean
public FactoryBean<MessageHandler> jpaMessageHandler() {
    JpaOutboundGatewayFactoryBean factoryBean = new JpaOutboundGatewayFactoryBean();
    ...
    factoryBean.setProducesReply(false);
    return factoryBean;
}

And use it from the DSL:

@Bean
public IntegrationFlow jpaFlow(MessageHandler jpaMessageHandler) {
      ...
      .handle(jpaMessageHandler)
      .get();
}

Let me know what should be documented else!

And yes: we definitely should utilize JPA adapters in the next 1.2 Java DSL version...

Upvotes: 3

Related Questions