首页 > 解决方案 > RabbitMQ 基于浏览器的 UI 无法在 Headers 字段中嵌入 HashMap

问题描述

我在 RabbitMQ Queue 中的消息标头具有以下规范:

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);
}

标签: rabbitmq

解决方案


您可以通过这种方式添加标题:

在此处输入图像描述


推荐阅读