У меня есть два приложения для загрузки весной. в Application.java приемно-приложения у меня есть:Как отправить сообщение Jms из одного приложения для загрузки весны в другое, когда оба приложения используют встроенный activemq
@Bean
public JmsListenerContainerFactory<?> myFactory(ConnectionFactory connectionFactory, DefaultJmsListenerContainerFactoryConfigurer configurer) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
configurer.configure(factory, connectionFactory);
return factory;
}
и Receiver.java ...
@JmsListener(destination = "myQueue", containerFactory = "myFactory")
public void receiveMessage(String tradeString) throws JSONException, IOException {
tradeImpl = new ObjectMapper().readValue(tradeString, TradeImpl.class);
}
В отправителе-приложения Я просто использую:
public void send(trade) {
String queueName = "myQueue";
String tradeString = new ObjectMapper().writeValueAsString(trade);
jmsTemplate.convertAndSend(queueName, tradeString);
}
Так что я m просто отправляет сообщение в имя очереди, указанное в приложении-получателе. я получаю следующее в журналах
Не удалось запустить разъем JMX Невозможно привязать к URL [RMI: // локальный: 1099>/jmxrmi]: javax.naming.NameAlreadyBoundException: jmxrmi [исключение Корень java.rmi .AlreadyBoundException:
Я прочитал следующий пост и не нашел его очень обнадеживают:
Spring boot - sharing embedded JMS broker with separate service
в заключение:
Но Как я уже говорил, я не делал этого раньше и не уверен, что это возможно. Не нашел в Spring Boot docs явного сообщения, что он не работает в этой комбинации.
Я подозреваю, что идея встроенного буфера JMS Spring Boot JMS заключается в том, чтобы разрешить локальное тестирование интеграции с памятью, а не открывать встроенные JMS-брокеры во внешний мир.
Кто-нибудь знает, действительно ли то, что я хочу сделать, возможно? И если нет, есть ли какие-либо предложения о том, как я могу достичь обмена сообщениями между приложениями Spring-Boot с помощью встроенных брокеров?
Если у вас есть 2 приложения для загрузки весной и включенное ActiveMQ, это означает, что AMQ встроен в одно из двух приложений весны нет? Почему бы не использовать внешний автономный AMQ? –
Я мог бы сделать, но думаю, что я пойду таким образом в крайнем случае! У меня есть настоящее горячее любопытство, чтобы узнать, есть ли способ общения между приложениями, используя встроенный маршрут! Я, конечно, не женат на AMQ, поэтому я открыт для других встроенных решений. –