1、引入依赖

pom.xml

 1     <!-- activemq -->
2 <dependency>
3 <groupId>org.springframework</groupId>
4 <artifactId>spring-jms</artifactId>
5 <version>4.3.23.RELEASE</version>
6 </dependency>
7
8 <dependency>
9 <groupId>org.apache.activemq</groupId>
10 <artifactId>activemq-pool</artifactId>
11 <version>5.15.9</version>
12 </dependency>

2、配置属性文件(配置文件也要加入到spring配置管理中)

activemq.properties
activemq_url=tcp://192.168.0.102:61616
activemq_username=admin
activemq_password=admin

  

3、在com.activemq包下增加监听类

MyMessageListener.java   (队列、主题消费者接收代码)

package com.activemq;

import org.springframework.stereotype.Component;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage; /**
* 自定义监听类
* 记得加上注解@Component
* @author 。
*/
@Component
public class MyMessageListener implements MessageListener {
@Override
public void onMessage(Message message) {
if (null!=message && message instanceof TextMessage){
TextMessage textMessage= (TextMessage) message;
try {
System.out.println(textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}

4、编写配置文件(需要把该配置加入Spring管理中,这里不再说明)

spring-activemq.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
"> <context:annotation-config/>
<!--扫描类所在位置-->
<context:component-scan base-package="com.activemq"/> <!-- 读取配置文件 -->
<bean id="propertyPlaceholderConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<array>
<!-- activemq.properties所在文件路径-->
<value>/WEB-INF/config/activemq.properties</value>
</array>
</property>
</bean> <!--配置生产者-->
<bean id="jmsFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop">
<property name="connectionFactory">
<!--真正可以产生Connection的ConnectionFactory,由对应的jms服务厂商提供-->
<bean class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="${activemq_url}"/>
<!--连接的账号密码,没有密码可以不写-->
<property name="userName" value="${activemq_username}"/>
<property name="password" value="${activemq_password}"/>
</bean>
</property>
<!--最大连接数-->
<property name="maxConnections" value="100"></property>
</bean> <!--这个是队列目的地,点对点的-->
<bean id="destinationQueue" class="org.apache.activemq.command.ActiveMQQueue">
<!--queue是对应名字,这里根据自己的填写-->
<constructor-arg index="0" value="queue"/>
</bean> <!--这个是主题-->
<bean id="destinationTopic" class="org.apache.activemq.command.ActiveMQTopic">
<constructor-arg index="0" value="topic"/>
</bean> <!--Spring提供的JMS工具类,进行消息发送、接收-->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="jmsFactory"/>
<!--
这里的值destinationQueue对应上面的<bean id="destinationQueue"
如果这里的值写 destinationQueue 表示是队列
如果这里的值写 destinationTopic 表示这个是主题
以上可以根据具体的需要更改
-->
<property name="defaultDestination" ref="destinationQueue"/>
<property name="messageConverter">
<!--消息类型的转换-->
<bean class="org.springframework.jms.support.converter.SimpleMessageConverter"/>
</property>
</bean> <!--配置监听程序,只需要启动生产者 消费者不用启动,自动会监听记录-->
<bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="jmsFactory"/>
<!--
这里的值destinationQueue对应上面的<bean id="destinationQueue"
如果这里的值写 destinationQueue 表示是队列消费监听
如果这里的值写 destinationTopic 表示这个是主题消费监听
以上可以根据具体的需要更改
-->
<property name="destination" ref="destinationQueue"/>
<!--myMessageListener是在上面配置的base-package="com.activemq" 包下的监听类-->
<property name="messageListener" ref="myMessageListener"/>
</bean> </beans>

3、队列、主题生产者生产代码 (不可直接使用,这是伪代码,需根据具体情况自行调用send()里面的 jmsTemplate.send 代码方法)

package com.queue.activemq;

import org.springframework.jms.core.JmsTemplate;
import org.springframework.web.context.ContextLoader;
import org.springframework.web.context.WebApplicationContext; import javax.jms.TextMessage; public class Produce { private JmsTemplate jmsTemplate; public void send() {
WebApplicationContext webctx = ContextLoader.getCurrentWebApplicationContext();
this.jmsTemplate = (JmsTemplate) webctx.getBean("jmsTemplate");
/*队列生产者*/
jmsTemplate.send(session1 -> {
TextMessage textMessage = session1.createTextMessage("发送的消息内容");
return textMessage;
});
} }
												

Spring整合ActiveMQ,实现队列主题消息生产消费的更多相关文章

  1. Spring整合ActiveMQ实现消息延迟投递和定时投递

    linux(centos)系统安装activemq参考:https://www.cnblogs.com/pxblog/p/12222231.html 首先在ActiveMQ的安装路径 /conf/ac ...

  2. Spring整合ActiveMQ及多个Queue消息监听的配置

        消息队列(MQ)越来越火,在java开发的项目也属于比较常见的技术,MQ的相关使用也成java开发人员必备的技能.笔者公司采用的MQ是ActiveMQ,且消息都是用的点对点的模式.本文记录了实 ...

  3. spring整合ActiveMq

    spring整合ActiveMq: 1:依赖的jar包: 2:spring-activemq.xml    的配置: 代码: <?xml version="1.0" enco ...

  4. 【报错】spring整合activeMQ,pom.xml文件缺架包,启动报错:Caused by: java.lang.ClassNotFoundException: org.apache.xbean.spring.context.v2.XBeanNamespaceHandler

    spring版本:4.3.13 ActiveMq版本:5.15 ======================================================== spring整合act ...

  5. Java消息队列-Spring整合ActiveMq

    1.概述 首先和大家一起回顾一下Java 消息服务,在我之前的博客<Java消息队列-JMS概述>中,我为大家分析了: 消息服务:一个中间件,用于解决两个活多个程序之间的耦合,底层由Jav ...

  6. Spring整合ActiveMq消息队列

    ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久 ...

  7. spring整合activemq发送MQ消息[queue模式]实例

    queue类型消息 pom依赖 <dependency> <groupId>junit</groupId> <artifactId>junit</ ...

  8. spring 整合 ActiveMQ

    1.1     JMS简介 JMS的全称是Java Message Service,即Java消息服务.它主要用于在生产者和消费者之间进行消息传递,生产者负责产生消息,而消费者负责接收消息.把它应用到 ...

  9. Spring整合JMS(二)——三种消息监听器

    原文地址:http://haohaoxuexi.iteye.com/blog/1893676 1.3     消息监听器MessageListener 在Spring整合JMS的应用中我们在定义消息监 ...

随机推荐

  1. [SCOI2009] windy 数 (数位dp)

    题目 算法 应该是一道很经典的数位dp题 我们设dp[i][j]是填到第i位此时第i位的数是j的方案数 然后进行转移(代码注释) 代码 #include<iostream> #includ ...

  2. [LCT学习时的一些笔记]

    会找时间写一篇学习笔记的. \(Access\)的操作是把\(x\)和\(x\)所在原树的顶端点的路径变为一个\(splay\) 对于原树边我们有这样的操作,对每个\(splay\)的顶点维护一个父亲 ...

  3. Codeforces 446D - DZY Loves Games(高斯消元+期望 DP+矩阵快速幂)

    Codeforces 题目传送门 & 洛谷题目传送门 神仙题,%%% 首先考虑所有格子都是陷阱格的情况,那显然就是一个矩阵快速幂,具体来说,设 \(f_{i,j}\) 表示走了 \(i\) 步 ...

  4. YAOI Round #1 (Div.2) 题解

    总体来说很有一定区分度的(主要分为 4 题.2 题.1 题几档),ACM 赛制也挺有意思的,征求一下大家对这场比赛的意见吧,可以在这个帖子下回复,我都会看的. 简要题解:( A. 云之彼端,约定的地方 ...

  5. Docker-Mysql-proxy Mysql Proxy实现读写分离

      Docker-Mysql-proxy Mysql实现读写分离与负载 原理 MySQL Proxy处于客户端应用程序和MySQL服务器之间,通过截断.改变并转发客户端和后端数据库之间的通信来实现其功 ...

  6. 爬虫动态渲染页面爬取之Splash的介绍和使用

    Splash是一个JavaScript渲染服务,是一个带有HTTP API的轻量级浏览器,同时它对接了Python中的Twisted和QT库.利用它,我们同样可以实现动态渲染页面的抓取. 1. 功能介 ...

  7. mysql 中@ 和 @@的区别

    @x 是 用户自定义的变量 (User variables are written as @var_name)@@x 是 global或session变量 (@@global @@session )@ ...

  8. 08 eclipse配置JDK

    eclipse配置JDK1.8 一.打开eclipse:Window>>Preferences: 二.搜索:"jdk",并点击右侧的"Add": 三 ...

  9. Shell 格式化输出printf、awk

    目录 Shell 文件的格式化与相关处理 printf.awk 格式化打印printf 案例.格式化输出文件内容 输出命令echo 案例 awk数据处理工具 语法格式 处理流程 AWK内置变量 条件 ...

  10. centos服务器上挂载exFat U盘

    有些场景,我们需要在服务器上插入U盘,但是现在的U盘或者移动硬盘,大多都是exFat格式的,有时候linux系统识别不了,可以按照以下方式挂载. 1.安装nux repo(可以不装) yum inst ...