【发布时间】:2020-06-24 16:09:21
【问题描述】:
我在 Spring JMS Listener 版本 5 中有错误
我已将标头设置为布尔值。 我检查了 IBM mq 浏览器上的消息头,并且值设置正确; 但是当侦听器使用消息时,标头无法解析。 这是错误:
MessageHandlingException:方法参数类型 [class java.lang.Boolean] 缺少标头“VERSION_MESSAGE”,
这里是听众
@JmsListener(destination = QUEUE_INTERNE, containerFactory = "ListenerContainerFactory")
public void onMessageReceived(String message,
@Header (value = JmsHeaders.VERSION_MESSAGE) Boolean version)
这里是JmsHeaders.VERSION_MESSAGE的值是JmsHeaders
public static final String VERSION_MESSAGE="VERSION_MESSAGE";
我尝试了另一种方法,像这样从侦听器中删除标头:
@JmsListener(destination = QUEUE_INTERNE, containerFactory = "ListenerContainerFactory")
public void onMessageReceived(javax.jms.Message message)
boolean version=message.getBooleanProperty(JmsHeaders.VERSION_MESSAGE);
我没有错误,但布尔值始终为 false。
额外信息, 侦听器容器像这样被覆盖:
@Override
protected Message receiveMessage(MessageConsumer consumer) throws JMSException {
BatchMessage batch = new BatchMessage(batchSize);
while (!batch.releaseAfterMessage(super.receiveMessage(consumer))) ;
return batch.getMessages().isEmpty() ? null : batch;
}
并且被覆盖的方法总是返回 false:
@Override
public boolean getBooleanProperty(String s) throws JMSException {
return false;
}
现在我明白为什么我总是得到错误,但我怎样才能让它重新获得正确的价值?
谢谢
【问题讨论】:
标签: ibm-mq spring-jms