gpt4 book ai didi

java-8 - 对象消息上的 JMS 消息选择器

转载 作者:行者123 更新时间:2023-12-01 14:38:31 25 4
gpt4 key购买 nike

我正在使用 JavaEE 8 开发 liberty 18.0.0.2。
我创建了这样的自定义 jms 对象消息:

public class MyTextMessage implements Serializable {
private String text;
private String destination;
private LocalDateTime dateTime;

public MyTextMessage(String text, String destination, LocalDateTime dateTime) {
this.text = text;
this.destination = destination;
this.dateTime = dateTime;
}

public MyTextMessage() {
}

// Getter and Setter

@Override
public String toString() {
return "MyTextMessage{" +
"text='" + text + '\'' +
", destination='" + destination + '\'' +
", dateTime=" + dateTime +
'}';
}
}

如何根据对象属性选择队列?
这是我的代码,但不起作用:

JMSConsumer consumer = context.createConsumer(destination, "destination='abcdefg'");
Message message = consumer.receiveNoWait();
if (message != null) {
MyTextMessage myTextMessage = message.getBody(MyTextMessage.class);
System.out.println(myTextMessage);
}

最佳答案

您正在尝试选择 ObjectMessage 实现的属性,从技术上讲,它是消息正文的一部分。但是,JMS 2 规范的第 3.8.1 节指出:

Message selectors cannot reference message body values.

A message selector matches a message when the selector evaluates to truewhen the message’s header field and property values are substituted for theircorresponding identifiers in the selector.

因此,您需要在消息上设置一个属性,您可以选择一个值(例如使用 javax.jms.Message.setStringProperty("destination", "abcdefg") )。

关于java-8 - 对象消息上的 JMS 消息选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52920561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com