Мне нужно создать JMS Listener (предпочтительны аннотации) для получения сообщения из удаленной очереди.Я начал здесь с учебника по spring.io.
Это был простой пример только с файлом приложения:
@SpringBootApplication
@EnableJms
public class Application {
@Bean
public JmsListenerContainerFactory<?> myFactory(ConnectionFactory connectionFactory,
DefaultJmsListenerContainerFactoryConfigurer configurer) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
// This provides all boot's default to this factory, including the message converter
configurer.configure(factory, connectionFactory);
// You could still override some of Boot's default if necessary.
return factory;
}
@Bean // Serialize message content to json using TextMessage
public MessageConverter jacksonJmsMessageConverter() {
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
converter.setTargetType(MessageType.TEXT);
converter.setTypeIdPropertyName("_type");
return converter;
}
public static void main(String[] args) {
// Launch the application
ConfigurableApplicationContext context = SpringApplication.run(Application.class, args);
JmsTemplate jmsTemplate = context.getBean(JmsTemplate.class);
System.out.println("Sending a message.");
jmsTemplate.convertAndSend("mailbox", "someString");
}
}
и получателем:
@Component
public class Receiver {
@JmsListener(destination = "mailbox", containerFactory = "myFactory")
public void receiveMessage(String message) {
System.out.println("Received message:" + message);
}
}
Это сработало нормально.Следующим шагом была адаптация слушателя к получению из удаленной очереди.Мы используем Tibco Jms, и я заменил фабрику соединений в компоненте на TibjmsConnectionFactory, предоставив URL, имя пользователя, пароль и идентификатор клиента.и в поле назначения @JmsListener я поместил queueName удаленной очереди и также предоставил bean-компонент containerFactory.Однако, когда я запускаю приложение, я получаю следующую ошибку:
o.s.j.l.DefaultMessageListenerContainer : Could not refresh JMS Connection for destination <queueName' - retrying using FixedBackOff{interval=5000, currentAttempts=0, maxAttempts=unlimited}. Cause: Invalid protocol specification
, если я закомментирую слушателя, я не получаю ошибок
Я не вижу, чего мне не хватает