Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Decouple AAE from spring-cloud-stream #910

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
c5b16ae
WIP - rework connectors
LorenzoDiGiuseppe Nov 15, 2022
55bc7cb
WIP - connectors, registration of functions and so on
LorenzoDiGiuseppe Nov 16, 2022
5354226
WIP - Supplier loop example
LorenzoDiGiuseppe Nov 16, 2022
0a60244
WIP - fixed producer loop
LorenzoDiGiuseppe Nov 17, 2022
27a50f6
WIP - generic Connector
LorenzoDiGiuseppe Nov 17, 2022
4474715
migrated connectors
LorenzoDiGiuseppe Nov 17, 2022
dedd677
connectors tests using new binders
LorenzoDiGiuseppe Nov 17, 2022
1455b6e
WIP - graphQL migrated
LorenzoDiGiuseppe Nov 17, 2022
eaf1439
@EnableBinding commented + MyProducer and QueryConsumer migrated
jsokolowskii Nov 17, 2022
e51b7ab
WIP - audit service + test common
LorenzoDiGiuseppe Nov 17, 2022
3afc17c
WIP - building app skipping tests, context loads
LorenzoDiGiuseppe Nov 18, 2022
64cc230
WIP - migration done, tests still failing
LorenzoDiGiuseppe Nov 18, 2022
2731cb0
WIP - fixed missing default binder, it requires a better solution
LorenzoDiGiuseppe Nov 18, 2022
c2bd671
WIP - disabled messages test
LorenzoDiGiuseppe Nov 21, 2022
94df076
fix graphql config
LorenzoDiGiuseppe Nov 21, 2022
4ac1e0b
cleanup
LorenzoDiGiuseppe Nov 21, 2022
aa960d5
WIP - first part of integration tests fixed
LorenzoDiGiuseppe Nov 22, 2022
495e6ab
WIP - context fixed, integration-tests fails because channels apparen…
LorenzoDiGiuseppe Nov 22, 2022
cd9bdea
WIP - message events output supplier
LorenzoDiGiuseppe Nov 23, 2022
d88dd8f
WIP - RB Signal + JobMessage Producer
LorenzoDiGiuseppe Nov 23, 2022
b193cac
WIP - fix activiti-cloud-messages-service bug with innerBean
jsokolowskii Nov 23, 2022
dd9a4ba
WIP - fix mock channels and suppliers, removed dependencies from rabb…
LorenzoDiGiuseppe Nov 23, 2022
1246e5f
WIP - fix activiti-cloud-messages-service bug with innerBean - refact…
jsokolowskii Nov 24, 2022
af11aa4
WIP - Revert suppliers
LorenzoDiGiuseppe Nov 24, 2022
3df8257
WIP - fixed typo message events output supplier
LorenzoDiGiuseppe Nov 24, 2022
ea82c90
WIP - Sleuth disabled for avoiding errors in functional bindings
LorenzoDiGiuseppe Nov 24, 2022
1b4a6cb
WIP - replaced channel resolver
LorenzoDiGiuseppe Nov 25, 2022
1e40808
WIP - fix activiti-cloud-messages-service bug with partitioning
jsokolowskii Nov 28, 2022
8907603
proper timeouts for some tests
jsokolowskii Nov 28, 2022
58c3f17
WIP - restore binder resolver + fix integration flow
LorenzoDiGiuseppe Nov 28, 2022
0dda455
newline
LorenzoDiGiuseppe Nov 28, 2022
d566c91
WIP - Add transactional supplier
LorenzoDiGiuseppe Nov 29, 2022
2ba81f2
wip - revert supplier
LorenzoDiGiuseppe Nov 29, 2022
6f78506
WIP - add rabbit binder specific properties
LorenzoDiGiuseppe Nov 30, 2022
b4d485b
WIP - revert logback changes
jsokolowskii Nov 30, 2022
b502fb8
WIP - add transactional supplier + fix rabbit config naming
LorenzoDiGiuseppe Nov 30, 2022
fb9e871
WIP - fix gateway
LorenzoDiGiuseppe Nov 30, 2022
d660c8a
WIP - turn off logs, remove unused import
jsokolowskii Nov 30, 2022
61bd4b6
WIP - function supplier
LorenzoDiGiuseppe Nov 30, 2022
0057667
WIP - add debug logging for debugging build
jsokolowskii Nov 30, 2022
be80262
WIP - add INFO logging for debugging build
jsokolowskii Nov 30, 2022
04287e9
Restore supplier
LorenzoDiGiuseppe Dec 1, 2022
b9b0e7f
WIP - AbstractMessagesCoreIntegrationTests fixes and one test tempora…
jsokolowskii Dec 1, 2022
ed903c8
WIP - GraphQL fix + disabled EngineEventsMessageProducer (to be verif…
LorenzoDiGiuseppe Dec 1, 2022
00bdc94
removed unused imports
LorenzoDiGiuseppe Dec 2, 2022
58aca6a
WIP - fixed conditional definition config + added tests
LorenzoDiGiuseppe Dec 2, 2022
64ecf02
WIP - Removed output configuration from ConditionalFunctionDefinition…
LorenzoDiGiuseppe Dec 2, 2022
f6730dd
Enable ConditionalFunctionBinding and ConnectorBinding annotations fo…
jsokolowskii Dec 2, 2022
77fad2c
headers license + connectors
LorenzoDiGiuseppe Dec 5, 2022
a532b88
connectors test
LorenzoDiGiuseppe Dec 5, 2022
5ca760a
WIP - fixed function invocation from bindings & context loading
LorenzoDiGiuseppe Dec 5, 2022
73fdbec
fix conditional routing + output
LorenzoDiGiuseppe Dec 5, 2022
73711c9
cleanup code
LorenzoDiGiuseppe Dec 5, 2022
a1911a1
fix conditional integration flow
LorenzoDiGiuseppe Dec 6, 2022
564cbca
added router qualifier that was causing rb context load problems
LorenzoDiGiuseppe Dec 7, 2022
d62ee4f
handle Void return for @Connector
LorenzoDiGiuseppe Dec 13, 2022
5352db6
added bindings resolver
LorenzoDiGiuseppe Dec 14, 2022
142097c
cleanup
LorenzoDiGiuseppe Dec 14, 2022
5e5e8e8
add binding resolver to test cases
LorenzoDiGiuseppe Dec 15, 2022
948de11
cleanup unused dependencies
LorenzoDiGiuseppe Dec 16, 2022
d8be59c
add connector default condition
LorenzoDiGiuseppe Dec 16, 2022
29e7abe
transaction management
LorenzoDiGiuseppe Dec 19, 2022
f6feaed
internal channel names
LorenzoDiGiuseppe Dec 20, 2022
f93c341
channel names
LorenzoDiGiuseppe Dec 20, 2022
c37a661
removed duplicated dependency
LorenzoDiGiuseppe Dec 20, 2022
b6f64de
cleanup
LorenzoDiGiuseppe Dec 20, 2022
a0a75bd
add conditional for reactor and spring integration dependencies in co…
LorenzoDiGiuseppe Dec 21, 2022
b67b1a3
enable sleuth
LorenzoDiGiuseppe Jan 3, 2023
36990cd
WIP - function supplier
LorenzoDiGiuseppe Nov 30, 2022
ea30b22
removed unused imports
LorenzoDiGiuseppe Dec 2, 2022
a08322f
Remove TODOs
jsokolowskii Jan 5, 2023
28f72d5
Use Message instead of payload in FunctionInvocationWrapper for Conne…
jsokolowskii Jan 5, 2023
0a5217e
fix autoconfiguration
LorenzoDiGiuseppe Jan 5, 2023
4c7882a
Test fixes
jsokolowskii Jan 7, 2023
346460f
remove @Primary
LorenzoDiGiuseppe Jan 7, 2023
1df620a
find eof
LorenzoDiGiuseppe Jan 7, 2023
8ade2b0
add error channel
LorenzoDiGiuseppe Jan 17, 2023
73737cc
remove errorChannel binding
LorenzoDiGiuseppe Jan 24, 2023
c8907cb
fixing multiple bindings
LorenzoDiGiuseppe Jan 24, 2023
52dfef1
fix gateway interfaces
LorenzoDiGiuseppe Jan 24, 2023
fab385d
fix consumer gateway
LorenzoDiGiuseppe Jan 24, 2023
bf4dcad
add test coverage for appVersion connector expressions
LorenzoDiGiuseppe Jan 25, 2023
ac621e5
remove set properties for functional bindings
LorenzoDiGiuseppe Jan 25, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,10 @@
import org.activiti.cloud.services.audit.api.resources.EventsLinkRelationProvider;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

@Configuration
@Import(AuditConsumerChannelsConfiguration.class)
public class AuditAPIAutoConfiguration {

@Bean
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/*
* Copyright 2017-2020 Alfresco Software, Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.activiti.cloud.services.audit.api.config;

import org.activiti.cloud.services.audit.api.streams.AuditConsumerChannels;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.integration.dsl.MessageChannels;
import org.springframework.messaging.SubscribableChannel;

@Configuration
public class AuditConsumerChannelsConfiguration implements AuditConsumerChannels {

@Bean(AUDIT_CONSUMER)
@Override
public SubscribableChannel auditConsumer() {
return MessageChannels.publishSubscribe(AUDIT_CONSUMER)
.get();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,11 @@
package org.activiti.cloud.services.audit.api.streams;

import org.activiti.cloud.api.model.shared.events.CloudRuntimeEvent;
import org.springframework.cloud.stream.annotation.StreamListener;
import org.springframework.messaging.handler.annotation.Headers;

import java.util.Map;

public interface AuditConsumerChannelHandler {

@StreamListener(AuditConsumerChannels.AUDIT_CONSUMER)
void receiveCloudRuntimeEvent(@Headers Map<String, Object> headers, CloudRuntimeEvent<?, ?>... events);
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,5 @@ public interface AuditConsumerChannels {

String AUDIT_CONSUMER = "auditConsumer";

@Input(AUDIT_CONSUMER)
SubscribableChannel auditConsumer();
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@
<groupId>org.activiti.cloud</groupId>
<artifactId>activiti-cloud-service-common-config</artifactId>
</dependency>
<dependency>
<groupId>org.activiti.cloud</groupId>
<artifactId>activiti-cloud-service-messaging-config</artifactId>
</dependency>
<dependency>
<groupId>org.activiti.cloud</groupId>
<artifactId>activiti-cloud-services-audit-api</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
import org.activiti.cloud.services.audit.jpa.repository.EventsRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.stream.annotation.StreamListener;
import org.springframework.messaging.MessageHeaders;
import org.springframework.messaging.handler.annotation.Headers;
import org.springframework.transaction.annotation.Propagation;
Expand Down Expand Up @@ -54,7 +53,6 @@ public AuditConsumerChannelHandlerImpl(EventsRepository eventsRepository,

@SuppressWarnings("unchecked")
@Override
@StreamListener(AuditConsumerChannels.AUDIT_CONSUMER)
public void receiveCloudRuntimeEvent(@Headers Map<String, Object> headers, CloudRuntimeEvent<?, ?>... events) {
if (events != null) {
AtomicInteger counter = new AtomicInteger(0);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,23 @@
*/
package org.activiti.cloud.services.audit.jpa.streams.config;

import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.function.Consumer;
import org.activiti.cloud.api.model.shared.events.CloudRuntimeEvent;
import org.activiti.cloud.common.messaging.functional.FunctionBinding;
import org.activiti.cloud.services.audit.api.converters.APIEventToEntityConverters;
import org.activiti.cloud.services.audit.api.streams.AuditConsumerChannelHandler;
import org.activiti.cloud.services.audit.api.streams.AuditConsumerChannels;
import org.activiti.cloud.services.audit.jpa.repository.EventsRepository;
import org.activiti.cloud.services.audit.jpa.streams.AuditConsumerChannelHandlerImpl;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.Message;

@Configuration
@EnableBinding(AuditConsumerChannels.class)
public class AuditJPAStreamsAutoConfiguration {

@Bean
Expand All @@ -37,4 +42,15 @@ public AuditConsumerChannelHandler auditConsumerChannelHandler(EventsRepository
eventConverters);
}

@FunctionBinding(input = AuditConsumerChannels.AUDIT_CONSUMER)
@Bean
public Consumer<Message<List<CloudRuntimeEvent<?, ?>>>> auditConsumerChannelHandlerConsumer(AuditConsumerChannelHandler handler) {
return message -> {
handler.receiveCloudRuntimeEvent(message.getHeaders(),
Optional.ofNullable(message.getPayload())
.orElse(Collections.emptyList())
.toArray(new CloudRuntimeEvent[0]));
};
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,10 @@
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-rabbit-test-support</artifactId>
<artifactId>spring-cloud-stream</artifactId>
<scope>test</scope>
<classifier>test-binder</classifier>
<type>test-jar</type>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,6 @@

public interface IntegrationErrorChannelResolver {

MessageChannel resolveDestination(IntegrationRequest event);
String resolveDestination(IntegrationRequest event);

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,26 +16,20 @@
package org.activiti.cloud.connectors.starter.channels;

import org.activiti.cloud.api.process.model.IntegrationRequest;
import org.springframework.cloud.stream.binding.BinderAwareChannelResolver;
import org.springframework.messaging.MessageChannel;

public class IntegrationErrorChannelResolverImpl implements IntegrationErrorChannelResolver {

private final BinderAwareChannelResolver resolver;

private final IntegrationErrorDestinationBuilder integrationErrorDestinationBuilder;

public IntegrationErrorChannelResolverImpl(BinderAwareChannelResolver resolver,
IntegrationErrorDestinationBuilder integrationErrorDestinationBuilder) {
this.resolver = resolver;
public IntegrationErrorChannelResolverImpl(IntegrationErrorDestinationBuilder integrationErrorDestinationBuilder) {
this.integrationErrorDestinationBuilder = integrationErrorDestinationBuilder;
}

@Override
public MessageChannel resolveDestination(IntegrationRequest event) {
public String resolveDestination(IntegrationRequest event) {
String destination = integrationErrorDestinationBuilder.buildDestination(event);

return resolver.resolveDestination(destination);
return destination;
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,23 +17,26 @@

import org.activiti.cloud.api.process.model.IntegrationError;
import org.activiti.cloud.api.process.model.IntegrationRequest;
import org.springframework.cloud.stream.function.StreamBridge;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageChannel;

public class IntegrationErrorSenderImpl implements IntegrationErrorSender {

private final StreamBridge streamBridge;
private final IntegrationErrorChannelResolver resolver;

public IntegrationErrorSenderImpl(IntegrationErrorChannelResolver resolver) {
public IntegrationErrorSenderImpl(StreamBridge streamBridge, IntegrationErrorChannelResolver resolver) {
this.streamBridge = streamBridge;
this.resolver = resolver;
}

@Override
public void send(Message<IntegrationError> message) {
IntegrationRequest request = message.getPayload().getIntegrationRequest();

MessageChannel destination = resolver.resolveDestination(request);
String destination = resolver.resolveDestination(request);

destination.send(message);
streamBridge.send(destination, message);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,21 +15,21 @@
*/
package org.activiti.cloud.connectors.starter.channels;

import org.springframework.cloud.stream.annotation.StreamListener;
import org.springframework.integration.annotation.ServiceActivator;
import org.springframework.messaging.support.ErrorMessage;

public class IntegrationRequestErrorChannelListener {

private static final String ERROR_CHANNEL = "errorChannel";
public static final String ERROR_CHANNEL = "errorChannel";

private final IntegrationErrorHandler integrationErrorHandler;

public IntegrationRequestErrorChannelListener(IntegrationErrorHandler integrationErrorSender) {
this.integrationErrorHandler = integrationErrorSender;
}

@StreamListener(ERROR_CHANNEL)
public void handleError(ErrorMessage errorMessage) {
@ServiceActivator(inputChannel = ERROR_CHANNEL)
public void accept(ErrorMessage errorMessage) {
integrationErrorHandler.handleErrorMessage(errorMessage);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,6 @@

public interface IntegrationResultChannelResolver {

MessageChannel resolveDestination(IntegrationRequest event);
String resolveDestination(IntegrationRequest event);

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,26 +16,20 @@
package org.activiti.cloud.connectors.starter.channels;

import org.activiti.cloud.api.process.model.IntegrationRequest;
import org.springframework.cloud.stream.binding.BinderAwareChannelResolver;
import org.springframework.messaging.MessageChannel;

public class IntegrationResultChannelResolverImpl implements IntegrationResultChannelResolver {

private final BinderAwareChannelResolver resolver;

private final IntegrationResultDestinationBuilder integrationResultDestinationBuilder;

public IntegrationResultChannelResolverImpl(BinderAwareChannelResolver resolver,
IntegrationResultDestinationBuilder integrationResultDestinationBuilder) {
this.resolver = resolver;
public IntegrationResultChannelResolverImpl(IntegrationResultDestinationBuilder integrationResultDestinationBuilder) {
this.integrationResultDestinationBuilder = integrationResultDestinationBuilder;
}

@Override
public MessageChannel resolveDestination(IntegrationRequest event) {
public String resolveDestination(IntegrationRequest event) {
String destination = integrationResultDestinationBuilder.buildDestination(event);

return resolver.resolveDestination(destination);
return destination;
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,23 +17,27 @@

import org.activiti.cloud.api.process.model.IntegrationRequest;
import org.activiti.cloud.api.process.model.IntegrationResult;
import org.springframework.cloud.stream.function.StreamBridge;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageChannel;

public class IntegrationResultSenderImpl implements IntegrationResultSender {

private final StreamBridge streamBridge;
private final IntegrationResultChannelResolver resolver;

public IntegrationResultSenderImpl(IntegrationResultChannelResolver resolver) {
public IntegrationResultSenderImpl(StreamBridge streamBridge, IntegrationResultChannelResolver resolver) {

this.streamBridge = streamBridge;
this.resolver = resolver;
}

@Override
public void send(Message<IntegrationResult> message) {
IntegrationRequest request = message.getPayload().getIntegrationRequest();

MessageChannel destination = resolver.resolveDestination(request);
String destination = resolver.resolveDestination(request);

destination.send(message);
streamBridge.send(destination, message);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,24 @@
package org.activiti.cloud.connectors.starter.configuration;

import com.fasterxml.jackson.databind.ObjectMapper;
import org.activiti.cloud.connectors.starter.channels.*;
import org.activiti.cloud.connectors.starter.channels.IntegrationErrorChannelResolver;
import org.activiti.cloud.connectors.starter.channels.IntegrationErrorChannelResolverImpl;
import org.activiti.cloud.connectors.starter.channels.IntegrationErrorDestinationBuilder;
import org.activiti.cloud.connectors.starter.channels.IntegrationErrorDestinationBuilderImpl;
import org.activiti.cloud.connectors.starter.channels.IntegrationErrorHandler;
import org.activiti.cloud.connectors.starter.channels.IntegrationErrorHandlerImpl;
import org.activiti.cloud.connectors.starter.channels.IntegrationErrorSender;
import org.activiti.cloud.connectors.starter.channels.IntegrationErrorSenderImpl;
import org.activiti.cloud.connectors.starter.channels.IntegrationRequestErrorChannelListener;
import org.activiti.cloud.connectors.starter.channels.IntegrationResultChannelResolver;
import org.activiti.cloud.connectors.starter.channels.IntegrationResultChannelResolverImpl;
import org.activiti.cloud.connectors.starter.channels.IntegrationResultDestinationBuilder;
import org.activiti.cloud.connectors.starter.channels.IntegrationResultDestinationBuilderImpl;
import org.activiti.cloud.connectors.starter.channels.IntegrationResultSender;
import org.activiti.cloud.connectors.starter.channels.IntegrationResultSenderImpl;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cloud.stream.binding.BinderAwareChannelResolver;
import org.springframework.cloud.stream.function.StreamBridge;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
Expand Down Expand Up @@ -59,15 +73,14 @@ public IntegrationResultDestinationBuilder integrationResultDestinationBuilder(C

@Bean
@ConditionalOnMissingBean
public IntegrationResultChannelResolver integrationResultChannelResolver(BinderAwareChannelResolver resolver,
IntegrationResultDestinationBuilder integrationResultDestinationBuilder) {
return new IntegrationResultChannelResolverImpl(resolver, integrationResultDestinationBuilder);
public IntegrationResultChannelResolver integrationResultChannelResolver(IntegrationResultDestinationBuilder integrationResultDestinationBuilder) {
return new IntegrationResultChannelResolverImpl(integrationResultDestinationBuilder);
}

@Bean
@ConditionalOnMissingBean
public IntegrationResultSender integrationResultSender(IntegrationResultChannelResolver integrationChannelResolver) {
return new IntegrationResultSenderImpl(integrationChannelResolver);
public IntegrationResultSender integrationResultSender(StreamBridge streamBridge, IntegrationResultChannelResolver integrationChannelResolver) {
return new IntegrationResultSenderImpl(streamBridge, integrationChannelResolver);
}

@Bean
Expand All @@ -78,16 +91,15 @@ public IntegrationErrorDestinationBuilder integrationErrorDestinationBuilder(Con

@Bean
@ConditionalOnMissingBean
public IntegrationErrorChannelResolver integrationErrorChannelResolver(BinderAwareChannelResolver resolver,
IntegrationErrorDestinationBuilder integrationErrorDestinationBuilder) {
return new IntegrationErrorChannelResolverImpl(resolver, integrationErrorDestinationBuilder);
public IntegrationErrorChannelResolver integrationErrorChannelResolver(IntegrationErrorDestinationBuilder integrationErrorDestinationBuilder) {
return new IntegrationErrorChannelResolverImpl(integrationErrorDestinationBuilder);
}


@Bean
@ConditionalOnMissingBean
public IntegrationErrorSender integrationErrorSender(IntegrationErrorChannelResolver integrationChannelResolver) {
return new IntegrationErrorSenderImpl(integrationChannelResolver);
public IntegrationErrorSender integrationErrorSender(StreamBridge streamBridge, IntegrationErrorChannelResolver integrationChannelResolver) {
return new IntegrationErrorSenderImpl(streamBridge, integrationChannelResolver);
}

}
Loading