首页 > 解决方案 > TheTable 是如何填充到 ActiveMQMapMessage 中的?可以检索其内容吗?

问题描述

我刚刚使用 Docker 容器内的 ActiveMQ v5.14.5 使用 Groovy v2.4.12 编写了我的第一个 GEB/Spock 功能测试。我可以成功创建 MapMessage 并将其发送到 ActiveMQ。我称该消息为expectedMM,因为根据要求,我希望在此特定实例中取回相同的数据。

我还可以毫无问题地从不同的队列中检索生成的 MapMessage。我称之为我的实际MM

我面临的问题是

assert( expectedMM == actualMM ) 

失败是因为属性值和时间戳明显不同......许多字段都不同,除了“ theTable ”中包含的内容。这就是我感兴趣的数据。

  1. 表是如何在 MapMessage 中创建/填充的?它是否直接受到 un/marshalling 过程的影响?(听起来我不需要解组任何生成的地图?)
  2. 有没有办法用 getter 检索其内容?
  3. 如果没有,我真的需要一个一个地获取我需要的每个字段/键/名称吗?如果是这样,那就这样吧(希望不是!)。我只需要确保我正确理解了这一点。以下是我到目前为止所尝试的。

    • ActiveMQ API: ActiveMQMapMessage
    • 谷歌搜索:ActiveMQMapMessage theMap 等
    • 在任一地图上调用getObject('theTable')都会返回 null。
    • 使用getMapNames()打印所有键/值对不包括theTable(这解释了上面的 null )

标签: groovyactivemqgeb

解决方案


您是否考虑过使用 TextMessage 发送 Xml 或 JSON 有效负载?MapMessages 确实特定于 JMS,并且由于您必须知道每个字段的特定类型以及在检索值时执行大量类型检查而存在问题。

将 Xml 或 JSON 作为 TextMessage 发送可以将您与代理分离,并为以后的集成提供更大的灵活性。


推荐阅读