只需自己调用json消息转换器来创建
TextMessage
在发送之前打印它;在消费端也是一样,接收一条文本消息,打印它,然后在代码中使用转换器转换为对象。
编辑
另一种选择是对转换器进行子类划分,并在转换之后/之前进行日志记录。
编辑
下面是一个例子:
@SpringBootApplication
public class So51251864Application {
public static void main(String[] args) {
SpringApplication.run(So51251864Application.class, args);
}
@Bean
public ApplicationRunner runner(JmsTemplate template) {
return args -> template.convertAndSend("foo", new Foo("baz"));
}
@Bean
public MessageConverter converter() {
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter() {
@Override
public Message toMessage(Object object, Session session) throws JMSException, MessageConversionException {
TextMessage message = (TextMessage) super.toMessage(object, session);
System.out.println("outbound json: " + message.getText());
return message;
}
@Override
public Object fromMessage(Message message) throws JMSException, MessageConversionException {
System.out.println("inbound json: " + ((TextMessage) message).getText());
return super.fromMessage(message);
}
};
converter.setTargetType(MessageType.TEXT);
converter.setTypeIdPropertyName("type");
return converter;
}
@JmsListener(destination = "foo")
public void listen(Foo foo) {
System.out.println(foo);
}
public static class Foo {
private String bar;
public Foo() {
super();
}
public Foo(String bar) {
this.bar = bar;
}
public String getBar() {
return this.bar;
}
public void setBar(String bar) {
this.bar = bar;
}
@Override
public String toString() {
return "Foo [bar=" + this.bar + "]";
}
}
}
和
outbound json: {"bar":"baz"}
inbound json: {"bar":"baz"}
Foo [bar=baz]