如何删除 mule 中特定范围内的所有属性(INVOCATION/INBOUND/OUTBOUND/SESSION)
How to remove all the properties (INVOCATION/INBOUND/OUTBOUND/SESSION) in a specific scope in mule
我遇到了一个问题,我的 rabbit mq 消息 put 出错了,它没有告诉我 put 失败的根本原因是什么。查看 Whosebug,我发现我的问题与此处报告的问题相同 - to store a message in rabbitmq from mule - 就异常而言。
现在我试图找出是否有一种方法可以删除消息中存在的所有属性,或者是否可以按范围执行删除(即 INVOCATION/INBOUND/OUTBOUND/SESSION)。原因是,我根本不知道是哪个 属性 造成的。
我确实看过 <remove-property>
和 <message-properties-transformer>
,但它们仅适用于特定的 属性(并非全部)。
您可以在 Groovy 变压器中使用此方法:
import org.mule.api.transport.PropertyScope
message.getPropertyNames(PropertyScope.OUTBOUND).each {p -> message.removeProperty(p, PropertyScope.OUTBOUND)}
我会查看范围 OUTBOUND 和 SESSION,因为其他范围不应传播到传输边界。
您确定<remove-property>
仅对特定属性起作用吗?我记得使用这个带有通配符的转换器来实现类似于你正在尝试做的事情:
<remove-property propertyName="*" doc:name="Property"/>
我遇到了一个问题,我的 rabbit mq 消息 put 出错了,它没有告诉我 put 失败的根本原因是什么。查看 Whosebug,我发现我的问题与此处报告的问题相同 - to store a message in rabbitmq from mule - 就异常而言。 现在我试图找出是否有一种方法可以删除消息中存在的所有属性,或者是否可以按范围执行删除(即 INVOCATION/INBOUND/OUTBOUND/SESSION)。原因是,我根本不知道是哪个 属性 造成的。
我确实看过 <remove-property>
和 <message-properties-transformer>
,但它们仅适用于特定的 属性(并非全部)。
您可以在 Groovy 变压器中使用此方法:
import org.mule.api.transport.PropertyScope
message.getPropertyNames(PropertyScope.OUTBOUND).each {p -> message.removeProperty(p, PropertyScope.OUTBOUND)}
我会查看范围 OUTBOUND 和 SESSION,因为其他范围不应传播到传输边界。
您确定<remove-property>
仅对特定属性起作用吗?我记得使用这个带有通配符的转换器来实现类似于你正在尝试做的事情:
<remove-property propertyName="*" doc:name="Property"/>