我们如何在来自处理器的apache camel exchange消息中将头值设置为null。我正在向RabbitMQ交换传递消息,并且它期望将其中一个标头值设置为null。
在发送消息之前,我已尝试过处理器中的以下方法
exchange.getOut().setHeader("headername","");
但是这会在标题中设置一个空字符串。
我也试过
exchange.getOut().setHeader("headername",null);
但在这种情况下,标题本身不可见。
如果需要更多信息,请与我们联系。
答案 0 :(得分:1)
camel-rabbitmq组件不支持null
值的标头。它们在源代码中被过滤掉。
需要发送空值的奇怪要求/用例。因此,为什么我要求你解释这个。必须有充分的理由考虑改变骆驼。
答案 1 :(得分:0)
骆驼为此实现了一个修复程序,该修复程序已反向移植到2.22.1和2.21.3版本,并将在此之后提供。对于那些有兴趣知道如何实现此目标的人,请查看Camel-12654吉拉问题。
camel-rabbitmq组件和端点现在支持URI选项allowNullHeaders
,默认情况下为false。如果要发送值为null的自定义标头,请将其值设置为true。例如
from("rabbitmq://hostname:port/exchangeName?allowNullHeaders=true").....
这将配置camel-rabbitmq转换器以将标头设置为空值。现在,您可以通过处理器执行类似的操作
exchange.getOut().setHeader("headername",null);
这将指示camel-rabbitmq生产者不要跳过具有空值的标头。