使用Spring Cloud Bus和kafka(spring cloud bus)在客户端上动态刷新配置(不重启)。在kafka中,似乎pub / sub通常从控制台工作。但是永远不会调用客户端的监听器。
输出kafka命令:bin / kafka-console-consumer.sh --bootstrap-server host:9092 --topic springCloudBus - from-beginning
contentType
"text/plain"originalContentType "application/json;charset=UTF-8"{"type":"MyCustomRemoteEvent","timestamp":1524625355729,"originService":"application:db:8090","destinationService":"client:**","id":"9cb283d1-dc2f-4e63-80aa-03c9f52f773f","message":"<debug info>"}
contentType
"text/plain"originalContentType "application/json;charset=UTF-8"{"type":"AckRemoteApplicationEvent","timestamp":1524625355786,"originService":"client:8888","destinationService":"**","id":"dc4e42ee-ffba-427c-9c12-b493b262b29c","ackId":"9cb283d1-dc2f-4e63-80aa-03c9f52f773f","ackDestinationService":"client:**","event":"com.ifly.icourt.event.listener.MyCustomRemoteEvent"}
服务器项目,发布消息
String myUniqueId = context.getId();
// send message to service named "client"
MyCustomRemoteEvent event = new MyCustomRemoteEvent(this, myUniqueId, "client", "<debug info>");
context.publishEvent(event);
客户端项目,订阅消息,application.properties
# specify application context id
spring.application.name=client
事件
@SuppressWarnings("serial")
public class MyCustomRemoteEvent extends RemoteApplicationEvent {
private String message;
public MyCustomRemoteEvent() {
}
public MyCustomRemoteEvent(Object source, String originService, String destinationService, String message) {
super(source, originService, destinationService);
this.message = message;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
为什么从不调用侦听器?
@Component
public class NewListener implements ApplicationListener<MyCustomRemoteEvent> {
private static final Logger logger = LoggerFactory.getLogger(NewListener.class);
@Override
public void onApplicationEvent(MyCustomRemoteEvent event) {
System.out.println("<debug info> listener is invoked");
String message = event.getMessage();
logger.info("<debug info> get message: " + message);
}
}
添加
添加eureka后,监听器运行良好,可以调用。是否需要eureka才能使Spring Cloud Bus和kafka工作?