此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 spring-cloud-bus 4.3.0spring-doc.cadn.net.cn

自定义事件

广播您自己的活动

总线可以承载任何类型的事件RemoteApplicationEvent.默认传输是 JSON,反序列化程序需要提前知道将使用哪些类型。 要注册新类型,您必须将其放在org.springframework.cloud.bus.event.spring-doc.cadn.net.cn

要自定义事件名称,您可以使用@JsonTypeName在您的自定义类上或依赖 默认策略,即使用类的简单名称。spring-doc.cadn.net.cn

生产者和使用者都需要访问类定义。

在自定义包中注册事件

如果您不能或不想使用org.springframework.cloud.bus.event对于自定义事件,必须指定要扫描哪些包以查找类型的事件RemoteApplicationEvent通过使用@RemoteApplicationEventScan注解。包 指定为@RemoteApplicationEventScaninclude 子包。spring-doc.cadn.net.cn

例如,考虑以下名为MyEvent:spring-doc.cadn.net.cn

public class MyEvent extends RemoteApplicationEvent {
    ...
}

您可以通过以下方式向反序列化程序注册该事件:spring-doc.cadn.net.cn

@Configuration
@RemoteApplicationEventScan
public class BusConfiguration {
    ...
}

在不指定值的情况下,类的包@RemoteApplicationEventScan已使用已注册。在此示例中,com.acme使用BusConfiguration.spring-doc.cadn.net.cn

您还可以使用value,basePackagesbasePackageClasses属性@RemoteApplicationEventScan,如 以下示例:spring-doc.cadn.net.cn

@Configuration
//@RemoteApplicationEventScan({"com.acme", "foo.bar"})
//@RemoteApplicationEventScan(basePackages = {"com.acme", "foo.bar", "fizz.buzz"})
@RemoteApplicationEventScan(basePackageClasses = BusConfiguration.class)
public class BusConfiguration {
    ...
}

前面的所有示例@RemoteApplicationEventScan是等效的,因为com.acmepackage 通过显式指定@RemoteApplicationEventScan.spring-doc.cadn.net.cn

您可以指定要扫描的多个基本包。