使用值列表的 IBM MQ JMS 选择器

问题描述 投票:0回答:1

我遇到了一种情况,我在互联网上找不到任何其他示例,我想知道是否有人对此有任何想法。 基本上,我们需要使用一个选择器和 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')

谢谢!

java jms ibm-mq
1个回答
0
投票

您需要将选择器中的文字字符串用单引号引起来。以下是有效的选择器。

"channel IN ('TYPE1','TYPE2')"
© www.soinside.com 2019 - 2024. All rights reserved.