Lanzamiento de DamiBus v0.29, marco de desacoplamiento local de múltiples módulos

DamiBus está especialmente diseñado para desacoplar la comunicación entre múltiples módulos locales (especialmente módulos desconocidos, módulos de aislamiento y módulos de dominio). Cero dependencias, especialmente adecuado para DDD.

Características

Combinando los conceptos de Bus y RPC, se puede utilizar para distribución de eventos, llamadas de interfaz y respuesta asincrónica.

  • Admite la conducción de transacciones (distribución síncrona, transmisión transparente de excepción)
  • Admite interceptores e identificadores de eventos (conveniente para el seguimiento)
  • Admite la clasificación de oyentes y la entrega de archivos adjuntos (varios monitores pueden cooperar entre sí)
  • Admite dos estilos de experiencia, Bus y Api

Diferencias con EventBus y ApiBean comunes

  Cantidad Autobús de eventos API Hoja informativa de Dami
transmisión tener tener ninguno Enviar + escuchar y modo Api
respuesta tener ninguno tener Enviar y esperar respuesta (sendAndResponse) + escuchar (escuchar) + responder (responder) y modo Api
llamar de vuelta Sí+ ninguno tener- Enviar y esperar devolución de llamada (sendAndCallback) + escuchar (escuchar) + responder (responder)
acoplamiento débil- Débil+ Fuerte++  

Si implica aislamiento del cargador de clases: márquelo como compilado en el programa principal y márquelo como opcional en otros módulos.

¿Qué se actualiza esta vez?

  • TopicRouterPatterned agrega soporte de clasificación
  • TopicRouterCapacidades de enrutamiento independientes con patrones, personalizables
  • Agregar personalización del modo de enrutamiento basado en etiquetas
  • Agregar @DamiTopic: atributo de anotación de índice
  • dami-springboot-starter, aumenta la compatibilidad con spronboot 2.0
  • Solucione el problema de que la clase de implementación dami-springboot-starter no se puede registrar y cancelar el registro normalmente después de ser proxy

Efectos de personalización recientemente agregados (consulte la página de inicio del almacén para obtener más detalles. También puede personalizar su propia ruta según sea necesario):

public class Demo15_path {
    public void main(){
        //切换为模式匹配路由器 + RoutingPath(支持 * 和 ** 占位符;支持 / 或 . 做为间隔)
        DamiConfig.configure(new TopicRouterPatterned(RoutingPath::new));

        //拦截
        Dami.bus().listen("demo/a/*", (payload) -> {
            System.err.println(payload);
        });

        //发送事件
        Dami.bus().send("demo/a/1", "world1");
        Dami.bus().send("demo/a/2", "world2");
    }
}
public class Demo15_tag {
    public void main(){
        //切换为模式匹配路由器 + RoutingTag(":"前为主题,后按 "," 号分割作为tag)
        DamiConfig.configure(new TopicRouterPatterned(RoutingTag::new));

        //拦截
        Dami.bus().listen("demo.a:id", (payload) -> {
            System.err.println(payload);
        });

        //发送事件
        Dami.bus().send("demo.a:id", "world1");
        Dami.bus().send("demo.a:id,name", "world2");
    }
}

Pregunta: ¿Por qué no utilizar la cola de mensajes distribuida? Lo siento, es realmente una dimensión diferente.

dirección del proyecto

Supongo que te gusta

Origin www.oschina.net/news/259748/damibus-0-29-released
Recomendado
Clasificación