首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

无法在不同spring boot应用程序的不同端口上启动2个嵌入式active-mq

嵌入式ActiveMQ是一种轻量级的消息中间件,它可以在Spring Boot应用程序中使用。在不同的Spring Boot应用程序的不同端口上启动两个嵌入式ActiveMQ实例的方法如下:

  1. 确保你的应用程序中已经引入了ActiveMQ的依赖,可以通过在pom.xml文件中添加以下依赖来实现:
代码语言:txt
复制
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
  1. 在应用程序的配置文件(如application.properties或application.yml)中配置两个不同的ActiveMQ实例。可以通过以下方式配置两个实例:
代码语言:txt
复制
# 第一个ActiveMQ实例的配置
spring.activemq.broker-url=vm://localhost:61616
spring.activemq.user=admin
spring.activemq.password=admin

# 第二个ActiveMQ实例的配置
spring.activemq.broker-url2=vm://localhost:61617
spring.activemq.user2=admin
spring.activemq.password2=admin
  1. 在应用程序中创建两个不同的ActiveMQ连接工厂和JmsTemplate实例,分别与上述配置中的两个实例对应。可以通过以下方式创建:
代码语言:txt
复制
@Configuration
public class ActiveMQConfig {

    @Value("${spring.activemq.broker-url}")
    private String brokerUrl;

    @Value("${spring.activemq.user}")
    private String username;

    @Value("${spring.activemq.password}")
    private String password;

    @Bean
    public ConnectionFactory connectionFactory() {
        ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
        connectionFactory.setBrokerURL(brokerUrl);
        connectionFactory.setUserName(username);
        connectionFactory.setPassword(password);
        return connectionFactory;
    }

    @Bean
    public JmsTemplate jmsTemplate(ConnectionFactory connectionFactory) {
        JmsTemplate jmsTemplate = new JmsTemplate();
        jmsTemplate.setConnectionFactory(connectionFactory);
        return jmsTemplate;
    }

    @Value("${spring.activemq.broker-url2}")
    private String brokerUrl2;

    @Value("${spring.activemq.user2}")
    private String username2;

    @Value("${spring.activemq.password2}")
    private String password2;

    @Bean
    public ConnectionFactory connectionFactory2() {
        ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
        connectionFactory.setBrokerURL(brokerUrl2);
        connectionFactory.setUserName(username2);
        connectionFactory.setPassword(password2);
        return connectionFactory;
    }

    @Bean
    public JmsTemplate jmsTemplate2(ConnectionFactory connectionFactory2) {
        JmsTemplate jmsTemplate = new JmsTemplate();
        jmsTemplate.setConnectionFactory(connectionFactory2);
        return jmsTemplate;
    }
}
  1. 在需要使用ActiveMQ的地方,注入对应的JmsTemplate实例,并使用它发送和接收消息。可以通过以下方式使用:
代码语言:txt
复制
@Autowired
private JmsTemplate jmsTemplate;

@Autowired
private JmsTemplate jmsTemplate2;

public void sendMessage(String message) {
    jmsTemplate.convertAndSend("queueName", message);
}

public String receiveMessage() {
    return (String) jmsTemplate.receiveAndConvert("queueName");
}

public void sendMessage2(String message) {
    jmsTemplate2.convertAndSend("queueName2", message);
}

public String receiveMessage2() {
    return (String) jmsTemplate2.receiveAndConvert("queueName2");
}

这样,你就可以在不同的Spring Boot应用程序的不同端口上启动两个嵌入式ActiveMQ实例了。每个实例都有自己独立的配置和连接工厂,可以通过对应的JmsTemplate实例发送和接收消息。这种方式适用于需要在同一台机器上运行多个Spring Boot应用程序,并且每个应用程序都需要使用独立的消息队列的场景。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券