ActiveMQ整合Spring简单步骤

第一步,导入maven依赖

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>4.1.7.RELEASE</version>
    </dependency>
    <!-- 整合jms服务 -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jms</artifactId>
      <version>4.1.7.RELEASE</version>
    </dependency>
    <!-- ActiveMQ -->
    <dependency>
      <groupId>org.apache.activemq</groupId>
      <artifactId>activemq-all</artifactId>
      <version>5.2.0</version>
    </dependency>

    <dependency>
      <groupId>org.apache.xbean</groupId>
      <artifactId>xbean-spring</artifactId>
      <version>4.2</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>4.1.7.RELEASE</version>
    </dependency>
  </dependencies>


第二步,添加各种配置信息。

1.在spring的配置文件里设置Activemq的连接工厂,相当于设置连接源。使用的是activemq自己的类。

    org.apche.activemq.ActiveMqConnectionfactory.使用spring构造注入的方式设置参数。

 <bean id="amqconnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
        <!-- 用户名 -->
        <constructor-arg index="0" value="admin"></constructor-arg>
        <!-- 密码 -->
        <constructor-arg index="1" value="admin"></constructor-arg>
        <!-- 连接地址 -->
        <constructor-arg index="2" value="tcp://localhost:61616"></constructor-arg>
    </bean>

2.设置spring中的连接工厂,需要使用上一步的Activemq工厂做参数。

 <bean id="connectionFactory"
          class="org.springframework.jms.connection.CachingConnectionFactory">
        <!-- 目标ConnectionFactory对应真实的可以产生JMS Connection的ConnectionFactory -->
        <property name="targetConnectionFactory" ref="amqconnectionFactory"></property>
        <!-- Session缓存数量 -->
        <property name="sessionCacheSize" value="100" />
    </bean>

3.设置消息生产者,使用spring提供的模板

jmsQueueTemplate

这个对象最终是用来发送消息的,要注入到我们发送消息的类中。首先先注册在spring中,给spring管理。

<bean id="jmsQueueTemplate" class="org.springframework.jms.core.JmsTemplate">
        <constructor-arg ref="connectionFactory"></constructor-arg>
        <!-- 定义JmsTemplate的Queue类型 -->
        <!--true : 发布/订阅模式,也叫主题模式 -->
        <!--false : 队列模式 -->
        <property name="pubSubDomain" value="false" />
    </bean>

4.设置消息消费者。

<jms:listener-container destination-type="queue"
                        container-type="default" connection-factory="connectionFactory"
                        acknowledge="auto">
    <!--
        指定具体的消息的消费者
        destination : 指定队列的名字
        ref: 消费者
    -->
    <jms:listener destination="test.queue" ref="consumer" />
</jms:listener-container>

第三步。就是使用Activmq发送消息来测试我们的配置了。

1.创建一个发送者

@Component
public class SendMessage {
    @Autowired
    private JmsTemplate jmsTemplate;  //spring的模板

    public void sendMsg(String destintionName,final String msg){ //第一个参数消息发送到哪里去的队列名,消息消费者根据这个名字在MQ中找消息,第二个参数是我们发送的消息内容。
        jmsTemplate.send(destintionName, new MessageCreator() {
            @Override
            public Message createMessage(Session session) throws JMSException {
                TextMessage textMessage = session.createTextMessage(msg);  //创建一个文本消息。
                return textMessage;
            }
        });
   }
}

2.创建一个消息接受者。首先他要实现MessageListener接口。实现里面的onMessage方法

@Component
public class Consumer implements MessageListener{
    @Override
    public void onMessage(Message msg) {
        TextMessage textMessage = (TextMessage) msg;
        String text = null;
        try {
            text = textMessage.getText();
        } catch (JMSException e) {
            e.printStackTrace();
        }

        System.out.println("收到消息了 : " + text);
    }
}

四·开始测试

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring.xml")
public class JmsTest {

    @Autowired
    private SendMessage producer;

    @Test
    public void test() {

        producer.sendMsg("test.queue", "hello activeMQ");

        while (true) {

        }

    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值