本文介紹了如何在Spring JMS偵聽器中從JMS消息中獲取自定義屬性的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我知道您可以使用如下內(nèi)容訪問Spring JMS偵聽器中的標(biāo)準(zhǔn)標(biāo)頭:
public void receive(String in, @Header(JmsHeaders.MESSAGE_ID) String messageId)
是否有用于訪問自定義屬性的類似批注?
推薦答案
完全相同.
使用@Header
注釋(請參閱方法listen
)
或
使用封裝消息頭和負(fù)載的Message
接口(參見方法listenMessage
)
@SpringBootApplication
public class So52891334Application {
public static void main(String[] args) {
SpringApplication.run(So52891334Application.class, args);
}
@JmsListener(destination = "foo")
public void listen(String payload, @Header("bar") String bar,
@Header("qux") int qux) {
System.out.println(payload + ", bar header: " + bar + ", qux header: " + qux);
}
@JmsListener(destination = "bar")
public void listenMessage(Message<String> message) {
String payload = message.getPayload();
// Get headers from JMS message
MessageHeaders headers = message.getHeaders();
String headerBar = headers.get("bar", String.class);
Integer headerQux = headers.get("qux", Integer.class);
System.out.println(payload + ", bar header: " + headerBar + ", qux header: " + headerQux);
}
@Bean
public ApplicationRunner runner(JmsTemplate template) {
return args -> template.convertAndSend("foo", "test", m -> {
m.setStringProperty("bar", "baz");
m.setIntProperty("qux", 42);
return m;
});
}
}
和
test, bar header: baz, qux header: 42
這篇關(guān)于如何在Spring JMS偵聽器中從JMS消息中獲取自定義屬性的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,