美文网首页技术干粮
Java快速上手轻量级消息队列 Apache-ActiveMQ

Java快速上手轻量级消息队列 Apache-ActiveMQ

作者: 壳叔 | 来源:发表于2018-08-08 17:21 被阅读2次
    image

    本文由黑壳博客发布

    本文来源快速上手轻量级消息队列 Apache-ActiveMQ - 黑壳网http://blog.bhusk.com/articles/2018/03/05/1520253269039

    壳叔搞笑时间

    赶报表,晚餐没吃就喝了杯水。文员妹纸下班走时问我:要不要帮你叫外卖?
    我回她:刚喝了杯水,不饿。
    她伸出一只手的大拇指和小拇指在空中晃了几晃,我纳闷问:让我打你电话?
    她略尴尬道:说你666……
    我。。还有这种操作~

    正文

    了解消息队列

    http://blog.bhusk.com/articles/2018/03/05/1520250548267

    程序员要的干货

    开始搬运干货

    Java Pom文件
    现在Maven项目可以大大减少你的开发时间。

    
     
        <properties>
            <spring.version>4.2.5.RELEASE</spring.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jms</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-test</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.activemq</groupId>
                <artifactId>activemq-core</artifactId>
                <version>5.7.0</version>
                <exclusions>
                    <exclusion>
                        <artifactId>spring-context</artifactId>
                        <groupId>org.springframework</groupId>
                    </exclusion>
                </exclusions>
            </dependency>
        </dependencies>
    
     
    

    接下来 配置文件
    common.xml

        <context:annotation-config/>
    
        <!-- activemq 提供的connectionFactory-->
        <bean id="targetConnectionFactory"class="org.apache.activemq.ActiveMQConnectionFactory">
            <property name="brokerURL" value="tcp://127.0.0.1:61616"/>
        </bean>
        <!-- spring jms 提供的connectionFactory连接池-->
        <bean id="connectionFactory"class="org.springframework.jms.connection.SingleConnectionFactory">
            <property name="targetConnectionFactory" ref="targetConnectionFactory"/>
        </bean>
    
        <!--队列目的地 点对点 -->
        <bean id="queueDestination" class="org.apache.activemq.command.ActiveMQQueue">
            <constructor-arg value="queue"/>
        </bean>
    
        <!--主题模式-->
        <bean id="topicDestination" class="org.apache.activemq.command.ActiveMQTopic">
            <constructor-arg value="topic"/>
        </bean>
    

    product.xml 生产的配置文件

    <import resource="common.xml"/>
    <!--jms 用来发送消息 -->
    <bean id="jmsTemplale" class="org.springframework.jms.core.JmsTemplate">
        <property name="connectionFactory" ref="connectionFactory"></property>
    </bean>
    
    <bean class="com.bhsuk.producer.ProducerServiceImpl"/>
    

    生产的配置文件,配置完了,开始写product的代码吧
    ProducerServiceImpl.java

    
    public class ProducerServiceImpl implements ProducerService{  
      
        @Autowired  
      private JmsTemplate jmsTemplate;  
      @Resource(name = "topicDestination")  
        private Destination destination;  
      
     public void sendMessage(final String message) {  
            // 使用jmstemplate发送消息  
      jmsTemplate.send(destination, new MessageCreator() {  
                public Message createMessage(Session session) throws JMSException {  
                    // 创建消息体  
      TextMessage textmessage = session.createTextMessage(message);  
      System.out.println("消息已经发送"+message);  
     return textmessage;  
      }  
            });  
      }  
    }@Autowired  
    private JmsTemplate jmsTemplate;  
    @Resource(name = "topicDestination")  
    private Destination destination;  
      
    public void sendMessage(final String message) {  
        // 使用jmstemplate发送消息  
      jmsTemplate.send(destination, new MessageCreator() {  
            public Message createMessage(Session session) throws JMSException {  
                // 创建消息体  
      TextMessage textmessage = session.createTextMessage(message);  
      System.out.println("消息已经发送"+message);  
     return textmessage;  
      }  
        });  
    }
    
    

    本文只粘贴核心代码,如果需要详细代码或测试方法,可以去GitHub上观看更详细的代码。

    消费配置文件 consumer.xml

        <!-- 公共配置消息 -->
        <import resource="common.xml"/>
    
        <!--cousumer 监听类-->
        <bean id="consumerListener" class="com.yunus.jms.consumer.ConsumerListener"/>
        <!--message 监听容器 -->
        <bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
            <property name="connectionFactory" ref="connectionFactory"/>
            <property name="destination" ref="topicDestination"/>
            <property name="messageListener" ref="consumerListener"/>
        </bean>
    

    既然有生产和消费 生产写完了,那就得写消费了。
    ConsumerListener.java

    public class ConsumerListener implements MessageListener{  
      
        public void onMessage(Message message) {  
            TextMessage textMessage = (TextMessage) message;  
     try {  
                System.out.println("接受消息为"+textMessage.getText());  
      } catch (JMSException e) {  
                e.printStackTrace();  
      }  
        }  
    }
    
    

    直达GitHub 项目链接 (懒人专用)

    https://github.com/ykz200/Spring-ActiveMQ

    关于我们

    程序员太辛苦了

    请善待你们身边的每一位程序员~

    欢迎在评论写下你的程序员自黑体呦,嗯,相信你可以滴~~~~~~

    以上内容,均来自互联网~

    欢迎扫描二维码加入我们的组织
    黑壳网交流群 Qq:200408242

    11a84075a304ac57f6d37323512fd24cde9836350b9d80148b282eeaa188b196c2358d4ffd7006cbpng

    相关文章

      网友评论

        本文标题:Java快速上手轻量级消息队列 Apache-ActiveMQ

        本文链接:https://www.haomeiwen.com/subject/wnpxbftx.html