Таблица DOMAIN_EVENT_ENTRY не создана AXON - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть Aggregate GiftCard, определенный как

@Data
@NoArgsConstructor
@Aggregate
public class GiftCard {

    @AggregateIdentifier
    private String id;

    private int remainingValue;

    @CommandHandler
    public GiftCard(IssueCardCommand cmd) {
        apply(new CardIssuedEvent(cmd.getCardId(), cmd.getAmount()));
    }

    @CommandHandler
    public GiftCard(TempCommand cmd) {
        apply(new CardIssuedEvent(cmd.getCardId(), cmd.getAmount()));
    }

    @EventSourcingHandler
    public void on(CardIssuedEvent event) {
        this.id = event.getCardId();
        this.remainingValue = event.getAmount();
    }
}

И я отправляю IssueCardCommand с контроллера.

public String createGreeting(@PathVariable String cardNumber) {
    IssueCardCommand issueCardCommand = new IssueCardCommand(cardNumber, 100);
    commandGateway.sendAndWait(issueCardCommand, 500L, TimeUnit.MILLISECONDS);
    return "Hey";
}

Я могу подтвердить, что событие отправлено, посмотрев на http://localhost:8024/#query в AxonServer.

Я хочу сделать EventSourcing и настроил базу данных H2 в памяти.

    compile group: 'org.projectlombok', name: 'lombok', version: '1.18.6'

    compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.1.3.RELEASE'
    implementation 'org.axonframework:axon:4.1.1'
    implementation 'org.axonframework:axon-spring-boot-starter:4.1.1'
    testCompile group: 'junit', name: 'junit', version: '4.12'

    compile group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa', version: '2.1.4.RELEASE'
    runtime group: 'com.h2database', name: 'h2', version: '1.4.199'

Когда я смотрю на h2-console после отправки события, я не могу найти это событие в базе данных.Многие статьи были написаны, говоря, это будет храниться в таблице DOMAIN_EVENT_ENTRY.К сожалению, в моем случае я не могу найти эту таблицу.Я могу видеть только ASSOCIATION_VALUE_ENTRY, SAGA_ENTRY, TOKEN_ENTRY эти 3 таблицы.

Вот так выглядит моя установка.Команды и события написаны для целей обучения / практики (вы можете игнорировать бизнес-контекст и лучшие практики в данный момент)

1 Ответ

2 голосов
/ 16 апреля 2019

Проект был недавно обновлен, чтобы эти таблицы создавались только тогда, когда они фактически используются.Если вы не используете EmbeddedEventStore с JPAStorageEngine, то эти таблицы не создаются.В вашей настройке вы, кажется, используете AxonServer (который используется по умолчанию, если вы не исключаете зависимость axon-server-connector).В этом случае События хранятся в AxonServer.

Так что вы видите правильное и ожидаемое поведение.

...