ダミ、のために設計されましたローカルマルチモジュール間のコミュニケーションデカップリングそして設計(特に未知のモジュール、分離モジュール、ドメインモジュール)。依存関係がゼロで、特に DDD に適しています。
特徴
バスと RPC の概念を組み合わせることで、イベント配信、インターフェイス呼び出し、非同期応答に使用できます。
- トランザクションの実行をサポート (同期配信、例外透過送信)
- イベント識別子とインターセプターをサポート (追跡に便利)
- リスナーのソートと添付ファイルの配信をサポート (複数のモニターが相互に連携可能)
- Bus と API の 2 つのエクスペリエンス スタイルをサポート
一般的なEventBusやApiBeanとの違い
量 | イベントバス | アピビーン | ダミのファクトシート | |
---|---|---|---|---|
放送 | 持っている | 持っている | なし | 送信 + リッスン と API モード |
答え | 持っている | なし | 持っている | 送信して応答を待つ (sendAndResponse) + リッスン (listen) + 返信 (reply) と API モード |
折り返し電話 | はい+ | なし | 持っている- | コールバックを送信して待機 (sendAndCallback) + リッスン (listen) + 返信 (reply) |
カップリング | 弱- | 弱+ | 強い++ |
クラスローダーの分離が含まれる場合: メインプログラムではコンパイル済みとしてマークし、他のモジュールではオプションとしてマークしてください。
デカップリングとは何ですか?
@DamiTopic("event.user")
public interface EventUserService {
User getUser(long userId);
}
@DamiTopic("event.user")
public class EventUserServiceImpl {
//无耦合实现了 EventUserService 接口
public User getUser(long userId) {
return new User(userId);
}
}
@EnableAutoConfiguration
@SpringBootTest(classes = Demo91.class)
@ComponentScan("features.demo91_springboot")
public class Demo91 {
@Autowired
EventUserService eventUserService;
@Test
public void main(){
User user = eventUserService.getUser(99);
assert user.getUserId() == 99;
}
}
今回は何が更新されたのでしょうか?
- Payload::reply は成功しても失敗しても戻り値を増やします。
- Dami.api() のリスナー パラメーターの数は、送信側のパラメーターの数と若干異なる場合があります (Payload パラメーターの追加など)。
プロジェクトアドレス
- https://gitee.com/noear/dami
- https://github.com/noear/dami