命令された
Commanded を使用して、CQRS/ES パターンに従って独自の Elixir アプリケーションを構築します。
以下のサポートを提供します。
- コマンドの登録とディスパッチ。
- アグリゲートへのホスティングと委任。
- イベント処理。
- 長期にわたって実行されるプロセス マネージャー。
Commanded は、構築するための強固な技術基盤を提供します。これにより、アプリケーションの最も重要な部分であるドメインのモデリングに集中し、より良いアプリケーションをより速いペースで作成できるようになります。
永続化のために、次のイベント ストアのいずれかで Commanded を使用できます。
- EventStore - 永続化のために Postgres を使用する Elixir ライブラリ。
- EventStoreDB - イベント ソーシング用に構築されたストリーム データベース。
- インメモリ イベント ストア - テスト使用のみに含まれています。
各リリースに含まれる機能、バグ修正、およびアップグレードに関するアドバイスについては、CHANGELOG を参照してください。
Erlang/OTP v21.0 および Elixir v1.11 以降が必要です。
スポンサー
- 変更履歴
- ウィキ
- CQRS/ESとは何ですか?
- よくある質問
- 助けを求める
- 最新の公開された Hex パッケージとドキュメント
MITライセンス
この README と次のガイドはmaster
ブランチに従っていますが、現在公開されているバージョンではない可能性があります。
Commanded on Hex の最新公開バージョンのドキュメントをお読みください。
概要
- はじめる
- イベント店舗の選択
- PostgreSQL ベースのイベントストア
- グレッグ・ヤングのイベント・ストア
- コマンドの使用
- 集合体
- 集計例
Commanded.Aggregate.Multi
- 集約状態のスナップショット
- コマンド
- コマンドハンドラー
- コマンドのディスパッチとルーティング
- 集約アイデンティティを定義する
- 複数コマンドの登録
- ディスパッチタイムアウト
- ディスパッチの一貫性保証
- 実行結果を返すディスパッチ
- 集合体の寿命
- 複合コマンドルーター
- ミドルウェア
- 複合コマンドルーター
- イベント
- ドメインイベント
- イベントハンドラー
- イベントのアップキャスト
- プロセスマネージャー
- 監督
- 連載
- デフォルトのJSONシリアライザー
- JSON シリアル化の構成
- イベント構造体のデコード
- 代替シリアル化形式の使用
- シリアル化のカスタマイズ
- モデル予測の読み取り
- 導入
- 単一ノードの展開
- マルチノードクラスターの導入
- マルチノードだがクラスタ化された展開ではない
- コマンドによるテスト
- 本番環境で使用されますか?
- 応用例
- 20 分でコマンドを学ぶ
- イベント ストア プロバイダーの選択
- ツーリング
- 貢献する
- 助けが必要ですか?
本番環境で使用されますか?
はい、Commanded を使用している企業をご覧ください。
応用例
Conduit はオープンソースであり、Elixir で CQRS/ES パターンを実装するサンプル Phoenix 1.3 Web アプリケーションです。これは、Building Conduit ブックの Elixir アプリケーションでの Commanded の実装をデモンストレーションするために構築されました。
20 分でコマンドを学ぶ
Code Beam SF 2018 で Bernardo Amorim が CQRS とイベント ソーシングを紹介する様子をご覧ください。これらの概念を Commanded で使用して Elixir アプリケーションを実装する方法に関するチュートリアルが含まれています。
貢献する
新しい機能や改善された機能に貢献したり、ドキュメントを拡張したりするためのプル リクエストは大歓迎です。
既存のコーディング規約に従うか、Elixir スタイル ガイドを参照してください。
変更をカバーするには単体テストを含める必要があります。 mix test
実行してテスト スイートを実行します。
貢献者
Commanded は、以下の貢献者のおかげで存在します。
- アディル・ヤルリン
- アレクサンドル・デ・ソウザ
- アンドレイ・アクロフ
- アンジェイ・スリワ
- ベン・スミス
- ベンジャミン・モス
- ベルナルド・アモリン
- ブレントン・アナン
- クリス・ブロート
- クリス・マーティン
- クリストフ・ジュニエ
- ダニーロ・シルバ
- デイブ・ルシア
- デビッド・カーリン
- ダミール・ヴァンディック
- ダニー・フリードランド
- ディラクスン・ババラジャン
- エルネスト
- フェルナンド・メンデス
- フロリアン・エベリング
- ヘンリー・ハザン
- JC
- ジョアン・サパタ
- ジョアン・ジルベルト・モウラ
- ジョアン・タリス
- ジョン・ウィルガー
- ジョセフ・ロザーノ
- キアンメン・アン
- コク・ジェイ・サム
- レイフ・ゲンセルト
- ルイス・フェレイラ
- マルセロ・ドミンゲス
- マット・ダウティ
- マシュー・ベーリグ
- マイケル・ヘロルド
- ミゲル・パラス
- ナイジェル・ソーン
- オラファー・アラソン
- パオロ・ラウレンティ
- パトリック・デトレフセン
- フィル・チェン
- ラファエル・ラスティン
- シュテファン・ジュプタク
- トビアシュ・マウェツキ
- ウラジーミル・ドロビシェフスキー
- ウィリー・ウォンバット
- ヨルディス・プリエト
- ユーリ・デ・フィゲイレド
- ズヴェン
助けが必要ですか?
問題が発生した場合、またはサポートが必要な場合は、問題を開いてください。公式 Elixir Slack の #commanded チャンネルで助けを求めることもできます。