Слушатель никогда не может быть вызван с помощью весеннего облака и кафки - PullRequest
0 голосов
/ 25 апреля 2018

Для динамического обновления конфигурации (без перезапуска) на клиенте с 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?

...