如何从 Spring JMS 侦听器中的 JMS 消息获取自定义属性
How to get custom properties from JMS message in a Spring JMS Listener
我知道您可以在 Spring JMS 侦听器中访问标准 headers,方法如下:
public void receive(String in, @Header(JmsHeaders.MESSAGE_ID) String messageId)
是否有任何类似的注释可用于访问自定义属性?
完全一样...
- 要么使用
@Header
注释(见方法listen
)
或
- 使用
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
我知道您可以在 Spring JMS 侦听器中访问标准 headers,方法如下:
public void receive(String in, @Header(JmsHeaders.MESSAGE_ID) String messageId)
是否有任何类似的注释可用于访问自定义属性?
完全一样...
- 要么使用
@Header
注释(见方法listen
)
或
- 使用
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