2つのスプリングブートアプリケーションがあります。レシーバ・アプリケーションのApplication.javaに私が持っている:両方のアプリケーションが組み込みのactivemqを使用する場合、1つのスプリングブートアプリケーションから別のスプリングブートアプリケーションにJmsメッセージを送信する方法
私は単純に使用し、送信側アプリケーションで@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);
}
だから私は」 receiver-applicationで指定されたキュー名にメッセージを送信するだけです。 私はログ
に次のように取得するにはJMXコネクタがURLにバインドできません起動に失敗しました[RMI:// localhostを:1099>/jmxrmi]:javax.naming.NameAlreadyBoundException:jmxrmi [ルート例外はjava.rmiであります.AlreadyBoundException:
私は、次の記事を読んでいると、それは非常に励みに見つけることができませんでした:
Spring boot - sharing embedded JMS broker with separate service
それはで締めくくら:
しかし、私が言及したように、私はこれが以前にはうまく動作せず、可能かどうかもわかりませんでした。 Springブートのドキュメントで、この組み合わせでは動作しないという明示的なメッセージが見つかりませんでした。
埋め込み型JMSブローカを外部に公開しないために、埋め込み型SpringブートJMSブローカの背後にあるアイデアは、メモリ内でのローカルテストのみを可能にすると考えられます。
私がしたいことが本当に可能なのか誰かが知っていますか?もしそうでなければ、埋め込まれたブローカーを使って春起動アプリケーションとの間のメッセージングをどのように達成できるかについての提案はありますか?
2つの春起動アプリケーションとActiveMQが組み込まれている場合、これはAMQが2つの春のアプリケーションのいずれにも組み込まれていないことを意味しますか?なぜ外部スタンドアロンAMQを使用しないのですか? –
私はできますが、私は最後の手段としてその方法を行くと思います!埋め込まれたルートを使ってアプリ同士のメッセージをやりとりする方法があるかどうかを知るために、私は本当に熱心な好奇心を持っています!私は確かにAMQと結婚していないので、私は他の組み込みソリューションにもオープンです。 –