2017-06-15 65 views
0

是否有配置默认Message<T>头时从该方法返回的值所生成的消息中的方式:弹簧云流默认自定义消息头

@Publisher(channel = "theChannelname") 
public MyObject someMethod(Object param) { 
    ... 
    return myObject; 
} 

@SendTo("theChannelname") 
public MyObject someMethod(Object param) { 
    ... 
    return myObject; 
} 

在上面的例子将自动生成Message<MyObject>

那么,我该如何控制默认的消息生成?

回答

1

你可以做到这一点通过@Header注解的方法的参数:

@Publisher(channel="testChannel") 
public String defaultPayload(String fname, @Header("last") String lname) { 
    return fname + " " + lname; 
} 

http://docs.spring.io/spring-integration/reference/html/message-publishing.html#publisher-annotation

+0

我标志着答案接受,因为它包含了工作方案。不过,我宁愿不要通过基础架构操作影响我的界面... 或者我错过了什么吗? – Savash

+0

没有“基础架构操作”。这就是'@ Publisher'的工作原理:http://docs.spring.io/spring-integration/reference/html/message-publishing.html#publisher-annotation。你可能真的考虑从你的方法中返回整个'Message'来实现头部传输的需求。 –

+0

我有一个接口方法:'''结果createRecord(Object data)''并且在实现中,我想发送一个结果给Kafka主题。假设我不能改变一个接口......并且我不想编写代码来做它:) ie'''channel.send(消息消息)''' – Savash

1

不是真的 - 假设是,如果你返回一个有效载荷,那么你并不关心标题。你可以让方法返回一个Message并在那里添加你自己的头文件。