【发布时间】:2017-05-13 03:33:45
【问题描述】:
我有两个 spring-boot 应用程序。在接收器应用程序的 Application.java 我有:
@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);
}
所以我只是将消息发送到接收者应用程序中指定的队列名称。 我在日志中得到以下信息
无法启动 JMX 连接器无法绑定到 URL [rmi://localhost:1099>/jmxrmi]:javax.naming.NameAlreadyBoundException:jmxrmi [根异常是 java.rmi.AlreadyBoundException:
我已经阅读了以下帖子,并没有发现它非常鼓舞人心:
Spring boot - sharing embedded JMS broker with separate service
结尾是:
但正如我所提到的,我之前没有让这个工作,并且不确定它是否可能。在 Spring Boot 文档中没有找到明确的消息,它在这种组合中不起作用。
我怀疑嵌入式 Spring Boot JMS 代理背后的想法是只允许本地内存集成测试,而不是将嵌入式 JMS 代理暴露给外界。
有人知道我想做的事是否真的可行吗?如果没有,关于如何使用嵌入式代理在 Spring-boot 应用程序之间实现消息传递有什么建议吗?
【问题讨论】:
-
如果您有 2 个 Spring Boot 应用程序并嵌入了 ActiveMQ,这意味着 AMQ 嵌入在两个 Spring 应用程序之一中,不是吗?为什么不使用外部独立 AMQ?
-
我可以这样做,但我想我会在最后的手段下这样做!我真的很想知道是否有办法使用嵌入式路由在应用程序之间发送消息!我当然没有嫁给 AMQ,所以我对其他嵌入式解决方案持开放态度。
标签: java spring-boot activemq messaging