Есть ли порт Java или аналог библиотеки NEventStore?

Я прочитал о .NET Джонатана Оливера EventStore, и я должен сказать, что эта концепция мне очень импонирует: иметь простую библиотеку без зависимостей, которая не навязчива и просто фокусируется на источнике событий, оставляя большая свобода при выборе технологий для баз данных, обмена сообщениями и т.д.

Мой вопрос: доступно ли что-то подобное в мире Java? Я знаю, что существуют всевозможные фреймворки, связанные с CQRS, такие как Axon и Jdon, но они делают гораздо больше, чем просто поиск событий... Возможно, кто-нибудь работает над простым переносом?


person MarnixKlooster ReinstateMonica    schedule 04.02.2012    source источник


Ответы (4)


Я не знаю ни одного из существующих. В то же время написать его не составит особого труда. Самым сложным для меня при написании EventStore было найти правильную модель. У меня было два частных/внутренних релиза в моей компании, а затем два публичных релиза, прежде чем я был действительно доволен тем, как все обернулось. Есть несколько портов Ruby и других языков, и обычно на их написание уходит несколько часов, потому что авторы копируют модель. Если вы придерживаетесь того же подхода, я не понимаю, почему вы не можете написать свой собственный за несколько часов.

person Jonathan Oliver    schedule 04.02.2012
comment
Спасибо за этот ответ. Я нашел следующие порты до сих пор: nodeEventStore в JavaScript и euston-eventstore в Ruby. Если кто-то знает больше: буду признателен. - person MarnixKlooster ReinstateMonica; 06.02.2012

Я понимаю, что вопрос старый, но для тех, кто сейчас находится в аналогичном положении: вы можете попробовать EventStore Грега Янга (http://geteventstore.com< /а>)

Для запуска требуется .NET или mono, но есть клиентская библиотека на основе JVM: https://github.com/EventStore/eventstorejvmclient

person Cpt. Senkfuss    schedule 19.03.2014

Вы можете взглянуть на Occurrent, который предназначен для использования в качестве библиотеки. Это означает, что вы можете использовать только хранилище событий и ничего больше и добавлять дополнительные компоненты, когда сочтете нужным.

Он также предназначен для хорошей интеграции с популярными фреймворками, такими как Spring Boot, если вы хотите использовать фреймворк поверх него (без необходимости использовать код, специфичный для фреймворка, в вашей модели предметной области).

person Johan    schedule 13.10.2020

Теоретически он может поддерживать обмен сообщениями, но в настоящее время, похоже, поддерживает только базы данных.

Использование JDBC не так уж и сложно, и его можно довольно легко настроить в соответствии с вашими потребностями. Если вам нужна простота, я бы использовал JDBC.

Если вы хотите поддерживать JMS (обмен сообщениями), я бы использовал только это (с адаптацией службы к любой базе данных, которую вы хотите использовать). Это дает вам простой стандартный интерфейс, управляемый событиями, для всех типов обмена сообщениями (и любой базы данных, к которой вы подключаетесь)

person Peter Lawrey    schedule 04.02.2012
comment
Не могли бы вы объяснить, как это отвечает на мой вопрос? Я не понимаю... Библиотека EventStore просто позволяет фиксировать события в хранилище данных, вызывать хук при фиксации (и в этом хуке можно отправить сообщение в очередь) и читать эти события обратно из хранилище данных. Я просто ищу эквивалентный код Java. - person MarnixKlooster ReinstateMonica; 04.02.2012
comment
Итак, вам нужен стандартный JDBC и стандартный JMS. Я бы объединил их в простой вспомогательный класс, чтобы вы могли просто сказать вставить (XXX, YYY, ZZZ), чтобы он вставлялся в базу данных и вызывал сообщение с теми же данными. Я мог бы найти несколько примеров из Интернета, если хотите. ;) - person Peter Lawrey; 04.02.2012
comment
Либо я вас совсем не понимаю, либо наоборот. Я предполагаю, что вы знакомы с библиотекой EventStore или, по крайней мере, с концепцией источники событий (см. краткое описание на страница Википедии «Дизайн, управляемый доменом»)? - person MarnixKlooster ReinstateMonica; 04.02.2012
comment
Вы хотите обновить базу данных, а также уведомить слушателей об изменениях, чтобы они могли обработать событие/обновление. - person Peter Lawrey; 04.02.2012