2017-03-20 19 views
1

我想使用事件過濾器來減少應用程序使用彈簧雲流新版本中提供的新功能的主題量( Chelsea.RC1)。消息正在被創建,但具有正確的頭部,但是,檢查隊列中消息的內容,消息不包含頭部,只包含具有有效載荷的主體。錯誤使用「條件參數頭」@StreamListener的新版本Chelsea.RC1

public void sendEnroll(EnrollCommand data) { 

    //MessageChannel 
    outputEnroll.send(MessageBuilder 
      .withPayload(data) 
       .setHeader("brand", "MASTERCARD") 
       .setHeader("operation", Operation.ENROLL).build()); 
} 

消費者

@Service 
@EnableBinding(Channel.class) 
public class EnrollConsumer { 

@Autowired 
private EnrollService service; 

@StreamListener(target = Channel.INPUT_ENROLL, condition = "headers['brand']=='MASTERCARD'") 
public void enrollConsumer(@Payload String command){ 
    System.out.println(command); 
    //service.enrollment(command); 
} 
} 

在消費服務,它提供了以下警告:

WARN -kafka-listener-1 o.s.c.s.b.DispatchingStreamListenerMessageHandler:62 - Cannot find a @StreamListener matching for message with id: 7baae934-7484-a7fd-91b0-ba906558bb13 

回答

1

你必須映射您的自定義標題:

spring.cloud.stream.kafka.binder.headers = brand,operation 

這些信息出現在documentation

+0

Ty Artem,它的工作,對我的錯誤抱歉。 –

+0

太棒了!請檢查:http://stackoverflow.com/help/someone-answers –