基于RabbitMQ浏览器的UI无法在Headers字段中输入HashMap
RabbitMQ队列中my message的标头具有以下规范:基于RabbitMQ浏览器的UI无法在Headers字段中输入HashMap,rabbitmq,Rabbitmq,RabbitMQ队列中my message的标头具有以下规范: headers={ httpHeaders={transactionID=123, sessionID=451554}, contentType=text/plain, timestamp=1539607167303 } 因此,我在名为httpHeaders的键中嵌入了Hashmap。 我希望使用RabbitMQ UI复制此行为,但我不知道如何设置它
headers={
httpHeaders={transactionID=123, sessionID=451554},
contentType=text/plain,
timestamp=1539607167303
}
因此,我在名为httpHeaders的键中嵌入了Hashmap。
我希望使用RabbitMQ UI复制此行为,但我不知道如何设置它
选择列表选项仅为:字符串、布尔值、数字和列表
这是我以编程方式复制消息头的测试:
@Test
public void getTransactionId() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
String payload = "payload";
Map messageHeader = new HashMap();
Map httpHeader = new HashMap();
httpHeader.put(HttpHeaderKeys.TRANSACTION_ID_KEY, "123");
messageHeader.put(HTTP_HEADER_KEY, httpHeader);
MessageHeaders messageHeaders = new MessageHeaders(messageHeader);
GenericMessage message = new GenericMessage(payload, messageHeaders);
Method method = MDCUtils.class.getDeclaredMethod("getTransactionId", Message.class);
method.setAccessible(true);
Object result = method.invoke(null, message);
assertEquals("123", result);
}
您可以通过以下方式添加标题:
我收到一个
java.lang.IllegalArgumentException:为标题“headerHttp”指定的类型不正确。应为[interface java.util.Map],但实际类型为[class java.lang.String]
,因为httpHeaders被视为字符串而不是映射。执行在message.getHeaders().get(HttpHeaderKeys.HTTP_HEADER_KEY,Map.class)
中失败,我在其中转换它以获取transactionID KEY的值