【问题标题】:Mule JMS Endpoint with square brackets in topic name主题名称中带有方括号的 Mule JMS 端点
【发布时间】:2014-04-09 19:36:15
【问题描述】:

我需要一个共享的持久订阅 Mule 中的声音主题。 对于这种情况,主题名称应该类似于 [[test]]testtopic。但是 Mule 不允许我输入 '[' 或 ']'。

<jms:inbound-endpoint doc:name="JMS" connector-ref="sonicSub" topic="[[test]]testtopic" />

我尝试使用也不起作用的 ASCII 字符。有没有办法让它工作?

<jms:inbound-endpoint doc:name="JMS" connector-ref="sonicSub" topic="#['\133']['\133']test#['\135']#['\135']testtopic" />

我也尝试过使用十六进制值。它不评估十六进制值。

<jms:inbound-endpoint doc:name="JMS" connector-ref="sonicSub" topic="%5b%5btest%5d%5dtesttopic" />

我不能在端点中使用 MEL 吗?

【问题讨论】:

  • 仅供参考 [[test]] 不是 MEL。
  • 是的...我想知道是否有办法给我的主题命名,例如 [[test]].testtopic

标签: jms expression mule endpoint


【解决方案1】:

方括号是 Mule URI 中的非法字符,当从端点 URI 解析主题名称时,Mule 中的 JMS 传输不会解码编码字符。因此,您不能在主题属性(也不是地址属性)中设置带有方括号的主题名称。

【讨论】:

  • 同意。最好使用点作为分隔符,例如 test.testtopic 而不是 [[test]]testtopic
  • 这是否意味着,我无法使用 JMS 端点从 Mule 为 sonic 主题进行共享持久订阅?如果您有时间,请查看以下链接中的声波指南(第 301 页)。 j2ee-wg.web.cern.ch/j2ee-wg/SonicMQ50/sonicmq_docs/program.pdf
  • 您可以通过创建自定义连接器来实​​现此目的,该连接器通过使用自定义 JMSSupport 实现或 jms 连接器使用的自定义 JNDI 实现来扩展默认 JMSConnector。基本上,您只需要通过在实现中解析主题名称来解决问题。不过,我从未使用过 SonicMQ。如果您确实需要此功能,请参阅 Mule JMS 的 GithHub:github.com/mulesoft/mule/tree/mule-3.4.2/transports/jms
  • 感谢您的回复
猜你喜欢
  • 2018-04-21
  • 1970-01-01
  • 2014-05-04
  • 2015-08-13
  • 2014-02-14
  • 1970-01-01
  • 2015-12-13
  • 1970-01-01
  • 2015-09-14
相关资源
最近更新 更多