【问题标题】:Configuration for Embedded Broker ActiveMQ嵌入式代理 ActiveMQ 的配置
【发布时间】:2018-02-16 15:23:19
【问题描述】:

这是我向嵌入式代理发送消息的配置。此外,第一个 bean 方法仅用于创建和启动代理。它不返回任何实例。 此代码是否启动代理?我使用 JMS 模板的 send 方法将消息发送到下面提到的主题。我已经为要创建和运行的代理编写了 createbrokerservice。

@Configuration
@EnableJms
public class JMSConfig {

    public static final String DEFAULT_BROKER_URL = "tcp://localhost:61616";
    public static final String COMMENT_QUEUE = "comment-queue";

    @Bean
    public void createBrokerService() throws Exception {
        BrokerService broker = new BrokerService();
        TransportConnector connector = new TransportConnector();
        connector.setUri(new URI("tcp://localhost:61616"));
        broker.addConnector(connector);
        broker.start();
    }

    @Bean
    public ActiveMQConnectionFactory connectionFactory(){
        ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
        connectionFactory.setBrokerURL(DEFAULT_BROKER_URL);
        return connectionFactory;
    }   

    @Bean
    public JmsTemplate jmsTemplate(){
        JmsTemplate template = new JmsTemplate();
        template.setConnectionFactory(connectionFactory());
        template.setDefaultDestinationName(COMMENT_QUEUE);
        template.setPubSubDomain(true);
        template.setSessionTransacted(true);
        return template;
    }

【问题讨论】:

  • 代码审查有codereview.stackexchange.com
  • 好吧,我的问题有点不同。 createBrokerservice() 中的语句是否被执行?这样我就可以发布和订阅该代理。

标签: java spring-boot jms messagebroker


【解决方案1】:
   @Bean
public void createBrokerService() throws Exception {
    BrokerService broker = new BrokerService();
    TransportConnector connector = new TransportConnector();
    connector.setUri(new URI("tcp://localhost:61616"));
    broker.addConnector(connector);
    broker.start();
}

这是不正确的,@Bean 应该返回代理,然后您在应用程序的某处使用代理实例来启动它。

【讨论】:

  • @africandrogba 如果答案正确,请接受。 ;)
猜你喜欢
  • 2014-01-21
  • 2011-05-28
  • 2012-05-13
  • 2013-01-06
  • 2016-12-09
  • 2014-11-21
  • 1970-01-01
  • 1970-01-01
  • 2013-06-16
相关资源
最近更新 更多