JmsTemplate не получает сообщение с селекторомJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 JmsTemplate не получает сообщение с селектором

Сообщение Anonymous »

У меня есть простой отправитель сообщений JMS, который отправляет сообщение в ActiveMQ по теме с помощью селектора:

Код: Выделить всё

jmsTemplate.send(topicName, messageCreator -> {
BytesMessage message = messageCreator.createsBytesMessage();
message.setJMSType("myselector"); // a selector
try{
message.writesBytes(myPrtoobufMessage.toProtobuf()); // its just Bytes as it is protobuf
}catch(IOException ex){
}

return message;
});

})
Теперь у меня было два разных сообщения, и одно работало нормально, я мог его получить, поскольку я использовал класс прослушивателя с методом, отмеченным @JmsListener

Код: Выделить всё

@JmsListener(destination = topicName, selector = "JMSType='myselector'")
public void receiveMessageFromTopic(Message m){
// I can get the message I can get the JMSType from it and the body as in Bytes and covert easily
}
Что касается другого сообщения, мне пришлось написать его с помощью jmsTemplate, и я перепробовал все, что смог найти.

Код: Выделить всё

String selector="JMSType='myselector'";
jmsTemplate.setReceiveTimeout(500); // this is necessary or else it will keep on reading or waiting for a message to be read

jmsTemplate.receiveSelected(topicName,selector); // returns null after time out

Destimnation dest = (from destinationResolver.resolveDestinationName(session,topicName,true))
jmsTemplate.receiveSelected( destination, selector); // same null
jmsTemplate.recevieSelectedAndConvert(topicName,selector); // same null
ни один из вышеперечисленных вариантов получения не сработал. Я мог видеть сообщение в теме в JMSToolbox, что оно есть. но все, что я получаю, это ноль.
Если я использую метод с аннотацией
@JMSListner с определенным селектором, то я могу читать сообщения из темы.
Я поискал в Google поиск, в чем может быть проблема. пробую разные варианты. Эвн создает MessageListener и добавляет его в jmsTemplate.
Но я не хочу использовать способ @JmsListener. Поскольку он всегда будет запускаться всякий раз, когда я добавляю что-то по теме с тем же селектором. Я хочу читать тему всякий раз, когда захочу, поскольку эта часть jmsTemplate предназначена для проверки содержания целей сообщения темы. Поэтому я хочу запустить его по триггеру, а не по сообщению.

Подробнее здесь: https://stackoverflow.com/questions/783 ... h-selector
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»