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

本文由黑壳博客发布

本文来源快速上手轻量级消息队列 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


黑壳博客 blog.bhusk.com

E-mail:keshu@bhusk.com

本文由 黑壳博客的壳叔 创作或转载,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。

可自由转载、引用,但需署名作者且注明文章

留下你的脚步
推荐阅读