2017-09-07 108 views
0

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

@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; 
    } 
+0

代码评论有https://codereview.stackexchange.com/。 – ventiseis

+0

好吧,我的问题有点不同。 createBrokerservice()中的语句是否被执行?以便我可以发布和订阅该经纪人。 – africandrogba

回答

0
@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应该返回经纪人,那么你的地方使用你的应用程序代理实例得到它开始。

+0

明白了。我把代码放在main方法中。 – africandrogba

+0

@africandrogba如果它是正确的,请接受答案。 ;) – sarahTheButterFly