ActiveMQ使用spring JmsTemplate生成和订阅消息(二)

生成类:

@Component("topicProvider")
public class TopicProvider {
    @Resource
    private JmsTemplate topicJmsTemplate;

    /**
     * 向指定的topic发布消息
     *
     * @param topic
     * @param msg
     */
    public void publish(final Destination topic, final String msg) {

        topicJmsTemplate.send(topic, new MessageCreator() {
            public Message createMessage(Session session) throws JMSException {
                System.out.println("topic name " + topic.toString()
                        + ",发布消息内容为:\t" + msg);
                return session.createTextMessage(msg);
            }
        });
    }
}
监听器:

public class TopicMessageListener implements MessageListener{
    public void onMessage(Message message) {
        TextMessage tm = (TextMessage) message;
        try {
            System.out.println("订阅者1 \t" + tm.getText());
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
}
spirng配置:

xml version="1.0" encoding="UTF-8"?>
xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.1.xsd">
    
    <context:annotation-config />
    <context:component-scan base-package="com.activemq" />
    
    id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
        name="brokerURL" value="failover:(tcp://localhost:61616)" />
    
    id="topicDestination" class="org.apache.activemq.command.ActiveMQTopic">
        
            guo_topic
        
    
    
    id="topicJmsTemplate" class="org.springframework.jms.core.JmsTemplate">
        name="connectionFactory" ref="connectionFactory" />
        name="defaultDestination" ref="topicDestination" />
        name="pubSubDomain" value="true" />
        name="receiveTimeout" value="10000" />
    

    
    
    id="topicMessageListener" class="com.activemq.topic.TopicMessageListener" />
    
    id="topicJmsContainer"
          class="org.springframework.jms.listener.DefaultMessageListenerContainer">
        name="connectionFactory" ref="connectionFactory" />
        name="destination" ref="topicDestination" />
        name="messageListener" ref="topicMessageListener" />
        name="concurrency" value="4-8">
    
    

你可能感兴趣的:(ActiveMQ)