JMS&ActiveMQ教程
基于JMS的消息传送
ActiveMQ与Spring集成
ActiveMQ与SpringBoot集成
ActiveMQ安全机制
ActiveMQ主从集群

ActiveMQ与Spring集成步骤

消息发送者

1、创建普通的maven工程12-activemq-spring-sender作为 消息发送者

2、在pom.xml文件中添加相关依赖

!-- JMS规范的jar依赖 -->
<dependency>
    <groupId>javax.jms</groupId>
    <artifactId>javax.jms-api</artifactId>
    <version>2.0.1</version>
</dependency>
<!-- activeMQ对jms具体实现的jar依赖 -->
<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-client</artifactId>
    <version>5.15.8</version>
</dependency>
<!--spring提供的对jms支持的依赖-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jms</artifactId>
    <version>4.3.13.RELEASE</version>
</dependency>
<!--slf4j的简单实现 可加可不加,解决输出警告日志-->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.7.25</version>
</dependency>

注意:高版本的支持,还需要手动加几个spring的依赖,所以我们就用4.3.13.RELEASE

3、创建spring配置文件applicationContext.xml,并导入JMS配置文件,加入扫描包

<context:component-scan base-package="com.bjpowernode.activemq.service"/>
<import resource="applicationContext-jms.xml"/>

4、创建在JMS配置文件applicationContext-jms.xml并配置

● 配置连接工厂ConnectionFactory

● 配置JMS消息模板JmsTemplate

!-- 配置一个连接工厂 -->
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
    <property name="brokerURL" value="tcp://192.168.235.128:61616"/>
</bean>
<!-- 配置JmsTemplate -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
    <property name="connectionFactory" ref="connectionFactory" />
    <property name="defaultDestinationName" value="springQueue" />
</bean>

5、在com.bjpowernode.activemq.service包下创建一个MessageService类,并提供发送消息的方法

@Service
public class MessageService {
    @Autowired
    private JmsTemplate jmsTemplate;
    public void sendMessage(){
        jmsTemplate.send(new MessageCreator() {
            public Message createMessage(Session session) throws JMSException {
                return session.createTextMessage("Hello,Spring ActiveMQ");
            }
        });
    }
}

6、 在com.bjpowernode.activemq包下创建Test类,运行测试发送消息

public class Test {
    public static void main(String[] args) {
        //启动spring容器
        ApplicationContext context =
                new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
        //根据容器获取bean对象
        MessageService messageService = context.getBean("messageService", MessageService.class);
        //调用bean对象的方法, 发送消息
        messageService.sendMessage();
    }
}

7、在ActiveMQ控制台查看效果

消息接收者

1、 创建普通的maven工程12-activemq-spring-receiver作为 消息接收者

2、在pom.xml文件中添加相关依赖(可以从发送项目拷贝)

<!-- JMS规范的jar依赖 -->
<dependency>
    <groupId>javax.jms</groupId>
    <artifactId>javax.jms-api</artifactId>
    <version>2.0.1</version>
</dependency>
<!-- activeMQ对jms具体实现的jar依赖 -->
<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-client</artifactId>
    <version>5.15.8</version>
</dependency>
<!--spring提供的对jms支持的依赖-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jms</artifactId>
    <version>4.3.13.RELEASE</version>
</dependency>
<!--slf4j的简单实现 可加可不加,解决输出警告日志-->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.7.25</version>
</dependency>

注意:高版本的支持,还需要手动加几个spring的依赖,所以我们就用4.3.13.RELEASE

3、创建spring配置文件applicationContext.xml,并导入JMS配置文件,加入扫描包(可以从发送项目拷贝)

<context:component-scan base-package="com.bjpowernode.activemq.service"/>
<import resource="applicationContext-jms.xml"/>

4、创建在JMS配置文件applicationContext-jms.xml并配置

● 配置连接工厂ConnectionFactory

● 配置JMS消息模板JmsTemplate

<!-- 配置一个连接工厂 -->
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
    <property name="brokerURL" value="tcp://192.168.235.128:61616"/>
</bean>
<!-- 配置JmsTemplate -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
    <property name="connectionFactory" ref="connectionFactory" />
    <property name="defaultDestinationName" value="springQueue" />
</bean>

5、在com.bjpowernode.activemq.service包下创建一个MessageService类,并提供接收消息的方法

@Service
public class MessageService {
    @Autowired
    private JmsTemplate jmsTemplate;
    public void receiveMessage(){
        Message message = jmsTemplate.receive();
        if(message instanceof TextMessage){
            try {
                String text = ((TextMessage) message).getText();
                System.out.println("接收到的消息为:" + text);
            } catch (JMSException e) {
                e.printStackTrace();
            }
        }
    }
}

6、在com.bjpowernode.activemq包下创建Test类,运行测试发送消息 

public class Test {
    public static void main(String[] args) {
        //启动spring容器
        ApplicationContext context =
                new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
        //根据容器获取bean对象
        MessageService messageService = context.getBean("messageService", MessageService.class);
        //调用bean对象的方法, 发送消息
        messageService.receiveMessage();
    }
}

7、在ActiveMQ控制台查看效果

全部教程