我们可以在Spring Integration中丰富标题作为RabbitMQ的POJO吗?

时间:2015-05-30 21:34:56

标签: spring-integration spring-amqp

我在RabbitMQ的标题丰富中使用POJO。我们能这样做吗?在丰富了标题之后,队列的消费者会得到那个标题吗?其配置如下:

// Load INI file from path, Stream or TextReader.
var p = new FileIniDataParser();

// ; is also the default comment string, you need to change it
p.Parser.Configuration.CommentString = "//"; 

// Load the file
IniData parsedData = parser.LoadFile("TestIniFile.ini");

// your information
var buttonData = parsedData["Button_section1"]["Button1"].Split(new {}[";"])

1 个答案:

答案 0 :(得分:0)

header-mapper上的<int-amqp:outbound-channel-adapter>必须提供任何非标准标头(如果直接使用MessagePostProcessor,则必须由RabbitTemplate提供)。同样,它们应该在消费者方面被接受(<int-amqp:inbound-channel-adapter mapped-request-headers="myheader">)。

有什么不好还不够。 AMQP协议(以及任何有线协议)只能处理标准对象类型(DefaultMessagePropertiesConverter):

 boolean valid = (value instanceof String) || (value instanceof byte[]) || (value instanceof Boolean)
            || (value instanceof LongString) || (value instanceof Integer) || (value instanceof Long)
            || (value instanceof Float) || (value instanceof Double) || (value instanceof BigDecimal)
            || (value instanceof Short) || (value instanceof Byte) || (value instanceof Date)
            || (value instanceof List) || (value instanceof Map);
    if (!valid && value != null) {
        value = value.toString();
    }

因此,您的POJO标题将仅被视为String

因此,请确保您的逻辑足够方便。