[英]JMS message selector on Object message
我使用JavaEE 8開發自由18.0.0.2。
我創建了自定義jms對象消息,如下所示:
public class MyTextMessage extends 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節規定:
消息選擇器無法引用消息體值。
當消息的頭字段和屬性值替換為選擇器中的相應標識符時,消息選擇器在選擇器的計算結果為true時匹配消息。
因此,您需要在消息上設置一個屬性,您可以選擇一個值(例如,使用javax.jms.Message.setStringProperty(“destination”,“abcdefg”) )。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.