8. 广播您自己的活动
Bus 可以携带 类型为 的任何事件。默认传输方式为
JSON,反序列化器需要提前知道将使用哪些类型。
要注册新类型,必须将其放入 .RemoteApplicationEvent
org.springframework.cloud.bus.event
要自定义事件名称,您可以在自定义类上使用或依赖
默认策略,即使用类的简单名称。@JsonTypeName
生产者和使用者都需要访问类定义。 |
8.1. 在自定义包中注册事件
如果您不能或不想将 的分包用于自定义事件,则必须使用注释指定要扫描类型事件的包。包
使用 Include Subpackages 指定。org.springframework.cloud.bus.event
RemoteApplicationEvent
@RemoteApplicationEventScan
@RemoteApplicationEventScan
例如,请考虑以下名为 的自定义事件:MyEvent
package com.acme;
public class MyEvent extends RemoteApplicationEvent {
...
}
您可以通过以下方式向 deserializer 注册该事件:
package com.acme;
@Configuration
@RemoteApplicationEventScan
public class BusConfiguration {
...
}
在不指定值的情况下,注册使用的类的包。在此示例中,使用 的软件包注册。@RemoteApplicationEventScan
com.acme
BusConfiguration
您还可以使用 上的 、 或 属性 显式指定要扫描的包,如
以下示例:value
basePackages
basePackageClasses
@RemoteApplicationEventScan
package com.acme;
@Configuration
//@RemoteApplicationEventScan({"com.acme", "foo.bar"})
//@RemoteApplicationEventScan(basePackages = {"com.acme", "foo.bar", "fizz.buzz"})
@RemoteApplicationEventScan(basePackageClasses = BusConfiguration.class)
public class BusConfiguration {
...
}
前面的所有示例都是等效的,因为包是通过在 上显式指定包来注册的。@RemoteApplicationEventScan
com.acme
@RemoteApplicationEventScan
您可以指定要扫描的多个基础包。 |