添加自定义字段为标题在STOMP消息
问题描述:
我想补充版本:1.1到STOMP消息头这样的:添加自定义字段为标题在STOMP消息
destination:/cora/1234/panelapp/code/response content-type:application/json;charset=UTF-8 subscription:sub-0 message-id:bdyqehdj-5 content-length:492 **Version: 1.2**
@Override
public Message<?> preSend(Message<?> message, MessageChannel channel) {
StompHeaderAccessor sha = StompHeaderAccessor.wrap(message);
StompCommand command = sha.getCommand();
sha.setHeader(sha.STOMP_MESSAGE_HEADER, "1.2");
sha.setVersion("1.2");
sha.addNativeHeader(sha.STOMP_MESSAGE_HEADER, "1.2");
return message;
}
但postSend方法我找不到在报头中的版本信息。如何将版本信息导入PostSend方法,该方法是通过ChannelInterceptorAdapter中的preSend方法设置的。
更新:
@Override public Message<?> preSend(Message<?> message, MessageChannel channel) {
return MessageBuilder.fromMessage(message).setHeader("Version","1.2").build();
}
答
我们可以设置标题为键/值对:
MutableMessageBuilder.fromMessage(message)
.setHeader("key","value")
.build();
我跟你提到的方式尝试,但我得到了以下异常: 导致:java.lang.UnsupportedOperationException:MessageHeaders是不可变的 – Amit
@Amit你可以尝试像上面 – Barath
我发现下面从PostSend方法中的getMessageHeader(): getMessageHeaders:{simpMessageType = MESSAGE,nativeHeaders = {destination = [/ cora/1234/panelapp/code/response],content-type = [application/json; charset = UTF-8] },simpSubscriptionId = sub-0,conversionHint = method'checkPin'parameter -1,contentType = application/json; charset = UTF-8,simpSessionId = hlb2dg5z,simpDestination =/cora/1234/panelapp/code/response}。但在标题信息中找不到密钥 – Amit