spring整合ActiveMq配置以及入门操作

ActiveMQ是apache旗下的一个消息队列,可以实现项目与项目之间的消息通讯,可以有效的降低项目之间的耦合性,支持多种传送协议:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:amq="http://activemq.apache.org/schema/core"
   xmlns:jms="http://www.springframework.org/schema/jms"
   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.xsd">

    <!-- 真正可以产生Connection的ConnectionFactory,由对应的 JMS服务厂商提供-->
   <bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> 
       <property name="brokerURL" value="tcp://192.168.25.128:61616"/>
   </bean>

    <!-- Spring用于管理真正的ConnectionFactory的ConnectionFactory --> 
   <bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory"> 
   <!-- 目标ConnectionFactory对应真实的可以产生JMS Connection的ConnectionFactory --> 
       <property name="targetConnectionFactory" ref="targetConnectionFactory"/> 
   </bean>  

    <!-- Spring提供的JMS工具类,它可以进行消息发送、接收等 --> 
   <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> 
       <!-- 这个connectionFactory对应的是我们定义的Spring提供的那个ConnectionFactory对象 --> 
       <property name="connectionFactory" ref="connectionFactory"/> 
   </bean>     
    <!--这个是队列目的地,点对点的  文本信息--> 
   <bean id="queueNumDestination" class="org.apache.activemq.command.ActiveMQQueue">
       <constructor-arg value="sms"/>
   </bean>    

   <!--&lt;!&ndash;这个是订阅模式  文本信息&ndash;&gt;-->
   <bean id="topicTextDestination" class="org.apache.activemq.command.ActiveMQTopic">  -->
       <!--<constructor-arg value="topic_text"/>
   <!--</bean>  -->
</beans>

下面就是一个Active的点对点的基本操作

MAVEN项目的发送

package com.jms.user.service.impl;

import com.pinyougou.user.interfice.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import com.alibaba.dubbo.config.annotation.Service;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;

import javax.jms.*;

/**
 * 服务实现层
 *
 * @author Administrator
 */
@Service
public class UserServiceImpl implements UserService {
    
    @Autowired
    private JmsTemplate jmsTemplate;

    @Autowired
    private Destination queueNumDestination;

    @Autowired
    private RedisTemplate redisTemplate;

    @Override
    public void createSmsCode(final String num) {
        jmsTemplate.send(queueNumDestination, new MessageCreator() {
            @Override
            public Message createMessage(Session session) throws JMSException {
                MapMessage message = session.createMapMessage();
                String s="";
                Intege num = 12;
                redisTemplate.boundHashOps("num").put(num,s);
                message.setString("num",num);
                message.setString("s",s);
                return message;

            }
        });
    }


}

SpringBoot项目的监听

package cn.jms.sms.util;

import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;

import java.util.Map;
@Component
public class ActiceMqLister {
    
    @JmsListener(destination = "sms")
    public void onMessage(Map<String,String> map) {
        System.out.println(map.get("num")+map.get("s"));
    }
}

猜你喜欢

转载自blog.csdn.net/King_1768/article/details/89253424