Не удается подключиться к удаленной очереди с помощью @JmsListener - PullRequest
0 голосов
/ 27 февраля 2019

Мне нужно создать 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

, если я закомментирую слушателя, я не получаю ошибок

Я не вижу, чего мне не хватает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...