听众永远不会被春云巴士和卡夫卡调用

时间:2018-04-25 03:35:24

标签: java spring apache-kafka spring-cloud

使用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工作?

0 个答案:

没有答案