Для динамического обновления конфигурации (без перезапуска) на клиенте с Spring Cloud Bus и kafka ( Spring Cloud Bus ).В кафке вроде паб / саб работает нормально с консоли.Но слушатель клиента никогда не будет вызван.
вывод команды kafka: bin / kafka-console-consumer.sh --bootstrap-server host: 9092 --topic springCloudBus --from-begin
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);
}
}
Добавить
После добавления эврики, слушатель работает хорошо и может быть вызван.Нужна ли эврика для работы Spring Cloud Bus и kafka?