Skip to content

Commit 94f78c5

Browse files
committed
Merge branch 'wip-channel-mapping' of https://github.com/microservice-patterns/ftgo-application into wip-separate-cdc
2 parents c464c09 + 510d6da commit 94f78c5

File tree

20 files changed

+55
-158
lines changed

20 files changed

+55
-158
lines changed

build-and-test-all.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ ${DOCKER_COMPOSE?} up -d --build ${DATABASE_SERVICES?}
4141

4242
echo mysql is started
4343

44-
${DOCKER_COMPOSE?} up -d --build tram-cdc-service
44+
${DOCKER_COMPOSE?} up -d --build cdc-service
4545

4646
if [ -z "$ASSEMBLE_ONLY" ] ; then
4747

docker-compose-mysql-schema-per-service.yml

+5-5
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ services:
8282
depends_on:
8383
- mysql
8484
- kafka
85-
- tram-cdc-service
85+
- cdc-service
8686
environment:
8787
SPRING_DATASOURCE_URL: jdbc:mysql://mysql/ftgoconsumerservice
8888
SPRING_DATASOURCE_USERNAME: mysqluser
@@ -99,7 +99,7 @@ services:
9999
depends_on:
100100
- mysql
101101
- kafka
102-
- tram-cdc-service
102+
- cdc-service
103103
- zipkin
104104
environment:
105105
SPRING_DATASOURCE_URL: jdbc:mysql://mysql/ftgoorderservice
@@ -121,7 +121,7 @@ services:
121121
- mysql
122122
- kafka
123123
- zookeeper
124-
- tram-cdc-service
124+
- cdc-service
125125
environment:
126126
SPRING_DATASOURCE_URL: jdbc:mysql://mysql/ftgokitchenservice
127127
SPRING_DATASOURCE_USERNAME: mysqluser
@@ -139,7 +139,7 @@ services:
139139
- mysql
140140
- kafka
141141
- zookeeper
142-
- tram-cdc-service
142+
- cdc-service
143143
environment:
144144
SPRING_DATASOURCE_URL: jdbc:mysql://mysql/ftgorestaurantservice
145145
SPRING_DATASOURCE_USERNAME: mysqluser
@@ -173,7 +173,7 @@ services:
173173
depends_on:
174174
- kafka
175175
- zookeeper
176-
- tram-cdc-service
176+
- cdc-service
177177
- dynamodblocal
178178
- dynamodblocal-init
179179
environment:

docker-compose.yml

+6-6
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ services:
2424
- MYSQL_ROOT_PASSWORD=rootpassword
2525
- MYSQL_USER=mysqluser
2626
- MYSQL_PASSWORD=mysqlpw
27-
tram-cdc-service:
27+
cdc-service:
2828
image: test-eventuate-cdc-service
2929
ports:
3030
- "8099:8080"
@@ -74,7 +74,7 @@ services:
7474
depends_on:
7575
- mysql
7676
- kafka
77-
- tram-cdc-service
77+
- cdc-service
7878
environment:
7979
SPRING_DATASOURCE_URL: jdbc:mysql://mysql/ftgoconsumerservice
8080
SPRING_DATASOURCE_USERNAME: mysqluser
@@ -93,7 +93,7 @@ services:
9393
depends_on:
9494
- mysql
9595
- kafka
96-
- tram-cdc-service
96+
- cdc-service
9797
- zipkin
9898
environment:
9999
SPRING_DATASOURCE_URL: jdbc:mysql://mysql/ftgoorderservice
@@ -114,7 +114,7 @@ services:
114114
- mysql
115115
- kafka
116116
- zookeeper
117-
- tram-cdc-service
117+
- cdc-service
118118
environment:
119119
SPRING_DATASOURCE_URL: jdbc:mysql://mysql/ftgokitchenservice
120120
SPRING_DATASOURCE_USERNAME: mysqluser
@@ -134,7 +134,7 @@ services:
134134
- mysql
135135
- kafka
136136
- zookeeper
137-
- tram-cdc-service
137+
- cdc-service
138138
environment:
139139
SPRING_DATASOURCE_URL: jdbc:mysql://mysql/ftgorestaurantservice
140140
SPRING_DATASOURCE_USERNAME: mysqluser
@@ -172,7 +172,7 @@ services:
172172
depends_on:
173173
- kafka
174174
- zookeeper
175-
- tram-cdc-service
175+
- cdc-service
176176
- dynamodblocal
177177
- dynamodblocal-init
178178
environment:

ftgo-accounting-service/src/main/java/net/chrisrichardson/ftgo/accountingservice/main/AccountingServiceMain.java

-5
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,6 @@
2121
TramJdbcKafkaConfiguration.class})
2222
public class AccountingServiceMain {
2323

24-
@Bean
25-
public ChannelMapping channelMapping() {
26-
return new DefaultChannelMapping.DefaultChannelMappingBuilder().build();
27-
}
28-
2924
public static void main(String[] args) {
3025
SpringApplication.run(AccountingServiceMain.class, args);
3126
}

ftgo-accounting-service/src/main/java/net/chrisrichardson/ftgo/accountingservice/messaging/AccountingMessagingConfiguration.java

+9-12
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22

33
import io.eventuate.javaclient.spring.EnableEventHandlers;
44
import io.eventuate.tram.commands.consumer.CommandDispatcher;
5+
import io.eventuate.tram.commands.consumer.CommandDispatcherFactory;
6+
import io.eventuate.tram.commands.consumer.TramCommandConsumerConfiguration;
57
import io.eventuate.tram.consumer.common.DuplicateMessageDetector;
6-
import io.eventuate.tram.events.common.DefaultDomainEventNameMapping;
78
import io.eventuate.tram.events.subscriber.DomainEventDispatcher;
9+
import io.eventuate.tram.events.subscriber.DomainEventDispatcherFactory;
10+
import io.eventuate.tram.events.subscriber.TramEventSubscriberConfiguration;
811
import io.eventuate.tram.messaging.consumer.MessageConsumer;
9-
import io.eventuate.tram.messaging.producer.MessageProducer;
1012
import io.eventuate.tram.sagas.eventsourcingsupport.SagaReplyRequestedEventSubscriber;
1113
import net.chrisrichardson.ftgo.accountingservice.domain.Account;
1214
import net.chrisrichardson.ftgo.accountingservice.domain.AccountServiceConfiguration;
@@ -19,7 +21,7 @@
1921

2022
@Configuration
2123
@EnableEventHandlers
22-
@Import({AccountServiceConfiguration.class, CommonConfiguration.class})
24+
@Import({AccountServiceConfiguration.class, CommonConfiguration.class, TramEventSubscriberConfiguration.class, TramCommandConsumerConfiguration.class})
2325
public class AccountingMessagingConfiguration {
2426

2527
@Bean
@@ -28,11 +30,8 @@ public AccountingEventConsumer accountingEventConsumer() {
2830
}
2931

3032
@Bean
31-
public DomainEventDispatcher domainEventDispatcher(AccountingEventConsumer accountingEventConsumer, MessageConsumer messageConsumer) {
32-
return new DomainEventDispatcher("accountingServiceDomainEventDispatcher",
33-
accountingEventConsumer.domainEventHandlers(),
34-
messageConsumer,
35-
new DefaultDomainEventNameMapping());
33+
public DomainEventDispatcher domainEventDispatcher(AccountingEventConsumer accountingEventConsumer, DomainEventDispatcherFactory domainEventDispatcherFactory) {
34+
return domainEventDispatcherFactory.make("accountingServiceDomainEventDispatcher", accountingEventConsumer.domainEventHandlers());
3635
}
3736

3837
@Bean
@@ -43,10 +42,8 @@ public AccountingServiceCommandHandler accountCommandHandler() {
4342

4443
@Bean
4544
public CommandDispatcher commandDispatcher(AccountingServiceCommandHandler target,
46-
AccountServiceChannelConfiguration data,
47-
MessageConsumer messageConsumer,
48-
MessageProducer messageProducer) {
49-
return new CommandDispatcher(data.getCommandDispatcherId(), target.commandHandlers(), messageConsumer, messageProducer);
45+
AccountServiceChannelConfiguration data, CommandDispatcherFactory commandDispatcherFactory) {
46+
return commandDispatcherFactory.make(data.getCommandDispatcherId(), target.commandHandlers());
5047
}
5148

5249
@Bean

ftgo-accounting-service/src/test/java/net/chrisrichardson/ftgo/accountingservice/messaging/AccountingServiceCommandHandlerTest.java

-5
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,6 @@ public TestMessageConsumerFactory testMessageConsumerFactory() {
5757
return new TestMessageConsumerFactory();
5858
}
5959

60-
@Bean
61-
public ChannelMapping channelMapping() {
62-
return new DefaultChannelMapping.DefaultChannelMappingBuilder().build();
63-
}
64-
6560
@Bean
6661
public DataSource dataSource() {
6762
EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();

ftgo-consumer-service/src/main/java/net/chrisrichardson/ftgo/consumerservice/domain/ConsumerServiceConfiguration.java

+4-20
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,7 @@
22

33
import io.eventuate.tram.commands.consumer.CommandDispatcher;
44
import io.eventuate.tram.events.publisher.TramEventsPublisherConfiguration;
5-
import io.eventuate.tram.messaging.common.ChannelMapping;
6-
import io.eventuate.tram.messaging.common.DefaultChannelMapping;
7-
import io.eventuate.tram.messaging.consumer.MessageConsumer;
8-
import io.eventuate.tram.messaging.producer.MessageProducer;
9-
import io.eventuate.tram.sagas.common.SagaLockManager;
10-
import io.eventuate.tram.sagas.participant.SagaCommandDispatcher;
5+
import io.eventuate.tram.sagas.participant.SagaCommandDispatcherFactory;
116
import io.eventuate.tram.sagas.participant.SagaParticipantConfiguration;
127
import net.chrisrichardson.ftgo.common.CommonConfiguration;
138
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
@@ -21,7 +16,7 @@
2116
@Configuration
2217
@EnableJpaRepositories
2318
@EnableAutoConfiguration
24-
@Import({SagaParticipantConfiguration.class, TramEventsPublisherConfiguration.class, CommonConfiguration.class})
19+
@Import({SagaParticipantConfiguration.class, TramEventsPublisherConfiguration.class, CommonConfiguration.class, SagaParticipantConfiguration.class})
2520
@EnableTransactionManagement
2621
@ComponentScan
2722
public class ConsumerServiceConfiguration {
@@ -37,20 +32,9 @@ public ConsumerService consumerService() {
3732
}
3833

3934
@Bean
40-
public CommandDispatcher commandDispatcher(ConsumerServiceCommandHandlers consumerServiceCommandHandlers,
41-
MessageConsumer messageConsumer,
42-
MessageProducer messageProducer,
43-
SagaLockManager sagaLockManager) {
44-
return new SagaCommandDispatcher("consumerServiceDispatcher",
45-
consumerServiceCommandHandlers.commandHandlers(),
46-
messageConsumer,
47-
messageProducer,
48-
sagaLockManager);
35+
public CommandDispatcher commandDispatcher(ConsumerServiceCommandHandlers consumerServiceCommandHandlers, SagaCommandDispatcherFactory sagaCommandDispatcherFactory) {
36+
return sagaCommandDispatcherFactory.make("consumerServiceDispatcher", consumerServiceCommandHandlers.commandHandlers());
4937
}
5038

51-
@Bean
52-
public ChannelMapping channelMapping() {
53-
return new DefaultChannelMapping.DefaultChannelMappingBuilder().build();
54-
}
5539

5640
}

ftgo-kitchen-service/src/main/java/net/chrisrichardson/ftgo/kitchenservice/main/KitchenServiceMain.java

-7
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package net.chrisrichardson.ftgo.kitchenservice.main;
22

33
import io.eventuate.jdbckafka.TramJdbcKafkaConfiguration;
4-
import io.eventuate.tram.messaging.common.ChannelMapping;
5-
import io.eventuate.tram.messaging.common.DefaultChannelMapping;
64
import net.chrisrichardson.eventstore.examples.customersandorders.commonswagger.CommonSwaggerConfiguration;
75
import net.chrisrichardson.ftgo.kitchenservice.messagehandlers.KitchenServiceMessageHandlersConfiguration;
86
import net.chrisrichardson.ftgo.kitchenservice.web.KitchenServiceWebConfiguration;
@@ -17,11 +15,6 @@
1715
CommonSwaggerConfiguration.class})
1816
public class KitchenServiceMain {
1917

20-
@Bean
21-
public ChannelMapping channelMapping() {
22-
return new DefaultChannelMapping.DefaultChannelMappingBuilder().build();
23-
}
24-
2518
public static void main(String[] args) {
2619
SpringApplication.run(KitchenServiceMain.class, args);
2720
}
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package net.chrisrichardson.ftgo.kitchenservice.messagehandlers;
22

3-
import io.eventuate.tram.events.common.DefaultDomainEventNameMapping;
43
import io.eventuate.tram.events.subscriber.DomainEventDispatcher;
4+
import io.eventuate.tram.events.subscriber.DomainEventDispatcherFactory;
5+
import io.eventuate.tram.events.subscriber.TramEventSubscriberConfiguration;
56
import io.eventuate.tram.messaging.consumer.MessageConsumer;
6-
import io.eventuate.tram.messaging.producer.MessageProducer;
7-
import io.eventuate.tram.sagas.common.SagaLockManager;
87
import io.eventuate.tram.sagas.participant.SagaCommandDispatcher;
8+
import io.eventuate.tram.sagas.participant.SagaCommandDispatcherFactory;
99
import io.eventuate.tram.sagas.participant.SagaParticipantConfiguration;
1010
import net.chrisrichardson.ftgo.common.CommonConfiguration;
1111
import net.chrisrichardson.ftgo.kitchenservice.domain.KitchenDomainConfiguration;
@@ -14,7 +14,7 @@
1414
import org.springframework.context.annotation.Import;
1515

1616
@Configuration
17-
@Import({KitchenDomainConfiguration.class, SagaParticipantConfiguration.class, CommonConfiguration.class})
17+
@Import({KitchenDomainConfiguration.class, SagaParticipantConfiguration.class, CommonConfiguration.class, TramEventSubscriberConfiguration.class, SagaParticipantConfiguration.class})
1818
public class KitchenServiceMessageHandlersConfiguration {
1919

2020
@Bean
@@ -28,22 +28,12 @@ public KitchenServiceCommandHandler kitchenServiceCommandHandler() {
2828
}
2929

3030
@Bean
31-
public SagaCommandDispatcher kitchenServiceSagaCommandDispatcher(KitchenServiceCommandHandler kitchenServiceCommandHandler,
32-
MessageConsumer messageConsumer,
33-
MessageProducer messageProducer,
34-
SagaLockManager sagaLockManager) {
35-
return new SagaCommandDispatcher("kitchenServiceCommands",
36-
kitchenServiceCommandHandler.commandHandlers(),
37-
messageConsumer,
38-
messageProducer,
39-
sagaLockManager);
31+
public SagaCommandDispatcher kitchenServiceSagaCommandDispatcher(KitchenServiceCommandHandler kitchenServiceCommandHandler, SagaCommandDispatcherFactory sagaCommandDispatcherFactory) {
32+
return sagaCommandDispatcherFactory.make("kitchenServiceCommands", kitchenServiceCommandHandler.commandHandlers());
4033
}
4134

4235
@Bean
43-
public DomainEventDispatcher domainEventDispatcher(KitchenServiceEventConsumer kitchenServiceEventConsumer, MessageConsumer messageConsumer) {
44-
return new DomainEventDispatcher("kitchenServiceEvents",
45-
kitchenServiceEventConsumer.domainEventHandlers(),
46-
messageConsumer,
47-
new DefaultDomainEventNameMapping()); // @Autowire
36+
public DomainEventDispatcher domainEventDispatcher(KitchenServiceEventConsumer kitchenServiceEventConsumer, DomainEventDispatcherFactory domainEventDispatcherFactory) {
37+
return domainEventDispatcherFactory.make("kitchenServiceEvents", kitchenServiceEventConsumer.domainEventHandlers());
4838
}
4939
}

ftgo-kitchen-service/src/test/java/net/chrisrichardson/ftgo/kitchenservice/domain/KitchenServiceInMemoryIntegrationTest.java

-5
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,6 @@ public class KitchenServiceInMemoryIntegrationTest {
5151
TramInMemoryConfiguration.class})
5252
public static class TestConfiguration {
5353

54-
@Bean
55-
public ChannelMapping channelMapping() {
56-
return new DefaultChannelMapping.DefaultChannelMappingBuilder().build();
57-
}
58-
5954
@Bean
6055
public TestMessageConsumerFactory testMessageConsumerFactory() {
6156
return new TestMessageConsumerFactory();

ftgo-order-history-service/src/main/java/net/chrisrichardson/ftgo/cqrs/orderhistory/messaging/OrderHistoryServiceMessagingConfiguration.java

+5-8
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,17 @@
44
import io.eventuate.tram.consumer.common.MessageConsumerImplementation;
55
import io.eventuate.tram.consumer.common.TramNoopDuplicateMessageDetectorConfiguration;
66
import io.eventuate.tram.consumer.wrappers.EventuateKafkaMessageConsumerWrapper;
7-
import io.eventuate.tram.events.common.DefaultDomainEventNameMapping;
87
import io.eventuate.tram.events.subscriber.DomainEventDispatcher;
9-
import io.eventuate.tram.messaging.consumer.MessageConsumer;
8+
import io.eventuate.tram.events.subscriber.DomainEventDispatcherFactory;
9+
import io.eventuate.tram.events.subscriber.TramEventSubscriberConfiguration;
1010
import net.chrisrichardson.ftgo.common.CommonConfiguration;
1111
import net.chrisrichardson.ftgo.cqrs.orderhistory.OrderHistoryDao;
1212
import org.springframework.context.annotation.Bean;
1313
import org.springframework.context.annotation.Configuration;
1414
import org.springframework.context.annotation.Import;
1515

1616
@Configuration
17-
@Import({CommonConfiguration.class, TramNoopDuplicateMessageDetectorConfiguration.class})
17+
@Import({CommonConfiguration.class, TramNoopDuplicateMessageDetectorConfiguration.class, TramEventSubscriberConfiguration.class})
1818
public class OrderHistoryServiceMessagingConfiguration {
1919

2020
@Bean
@@ -28,11 +28,8 @@ public OrderHistoryEventHandlers orderHistoryEventHandlers(OrderHistoryDao order
2828
}
2929

3030
@Bean
31-
public DomainEventDispatcher orderHistoryDomainEventDispatcher(OrderHistoryEventHandlers orderHistoryEventHandlers, MessageConsumer messageConsumer) {
32-
return new DomainEventDispatcher("orderHistoryDomainEventDispatcher",
33-
orderHistoryEventHandlers.domainEventHandlers(),
34-
messageConsumer,
35-
new DefaultDomainEventNameMapping());
31+
public DomainEventDispatcher orderHistoryDomainEventDispatcher(OrderHistoryEventHandlers orderHistoryEventHandlers, DomainEventDispatcherFactory domainEventDispatcherFactory) {
32+
return domainEventDispatcherFactory.make("orderHistoryDomainEventDispatcher", orderHistoryEventHandlers.domainEventHandlers());
3633
}
3734

3835
}

0 commit comments

Comments
 (0)