我遇到了一种情况,我在互联网上找不到任何其他示例,我想知道是否有人对此有任何想法。 基本上,我们需要使用一个选择器和 jms 侦听器,它在 .yml 文件中定义的字符串列表中查找值。我在 ibm 文档中看到了这样的示例
国家/地区 IN(“英国”、“美国”、“法国”)对于“英国”为 true,对于“秘鲁”为 false。它相当于表达式 (Country = 'UK') OR (Country = 'US') OR (Country = 'France')。
但我们需要从 .yml 文件加载它们。到目前为止,我们尝试过这样
@Value("${jms.selector}")
String selectors;
....
@JmsListener(destination = ... , container = ... , selector = "channel IN (${jms.selector})")
.yml 文件中的属性如下所示
jms:
selector: TYPE1, TYPE2
但是我们收到以下错误
目标“...”的 JMS 消息侦听器调用程序设置失败 - 尝试恢复。原因:JMSWMQ2008:无法打开 MQ 队列“...”。;嵌套异常是 com.ibm.mq.MQException: JMSCMQ0001: IBM MQ cqll 失败,compcode '2' ('MQCC_FAILED') 原因 '2459' ('MQRC_SELECTOR_SYNTAX_ERROR')
谢谢!
您需要将选择器中的文字字符串用单引号引起来。以下是有效的选择器。
"channel IN ('TYPE1','TYPE2')"