springboot 学习笔记(七)
(七)springboot整合activemq,消息消费,以及发送对象消息
1、springboot整合activemq发送消息,上一节已经介绍了,现在要对消息队列中的内容进行处理,下面写一个consumer类,要加上@component注解,springboot会自动加载,@jmslistener标注为消息监听器,监听的队列通过destination属性指定
@Component
public class TestConsumer { @JmsListener(destination="test.queue")
public void getMsg(String msg) {
System.out.println("收到消息:"+msg);
}
}
2、之前已经向activemq发送了两条消息,这时重启项目,看一下控制台会有以下输出

3、因为业务需求,我们可能需要向消息队列中发送对象,在activemq中新建user.queue队列,直接上代码
(1)首先在service接口中新增一个方法public void sendMessage(Destination destination,Object object);
具体实现为
public void sendMessage(Destination destination, Object object) {
jms.convertAndSend(destination, object);
}
(2)写一个user实体类,具体属性及get、set方法,要在消息队列中发送对象,要实现序列化
/**
*
*/
package com.zc.app.test.domain; import java.io.Serializable;
import java.util.Date; public class User implements Serializable{ private static final long serialVersionUID = 1L;
private String name;
private int age;
private String pwd;
private String phone;
private Date createTime;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
} }
User
(3)写一个UserConsumer,使用ObjectMapper进行对象转换
/**
*
*/
package com.zc.app.test.jms; import java.io.IOException; import javax.jms.JMSException;
import javax.jms.ObjectMessage; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component; import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.zc.app.test.domain.User; @Component
public class UserConsumer {
@Autowired
private ObjectMapper om; //实时监听队列
@JmsListener(destination="user.queue")
public void receiveQueue(ObjectMessage object) throws JsonParseException, JsonMappingException, IOException, JMSException {
System.out.println(object.getObject().toString());
User user = om.convertValue(object.getObject(), User.class);
System.out.println("收到对象为:"+user.getName());
} }
UserConsumer
(4)进行对象传输,需要开启activemq开启包配置,要在application.properties添加spring.activemq.packages.trust-all=true
(5)在controller中写一下测试,上代码
@GetMapping("sendObj")
public String Object() {
User user = new User();
user.setAge(18);
user.setCreateTime(new Date());
user.setName("张三");
user.setPhone("1154421122");
user.setPwd("123456");
Destination destination = new ActiveMQQueue("user.queue");
msgService.sendMessage(destination, user);
return "send obj success";
}
4、启动程序,直接访问http://localhost:8080/msg/sendObj,输出如下内容

5、这样就可以设置vo等对象进行负责的业务处理,我们也可以用json格式来进行对象的传输,使用ObjectMapper来进行json与对象的转换,相对来说这样的方式更加安全。
springboot 学习笔记(七)的更多相关文章
- (转)Qt Model/View 学习笔记 (七)——Delegate类
Qt Model/View 学习笔记 (七) Delegate 类 概念 与MVC模式不同,model/view结构没有用于与用户交互的完全独立的组件.一般来讲, view负责把数据展示 给用户,也 ...
- SpringBoot学习笔记
SpringBoot个人感觉比SpringMVC还要好用的一个框架,很多注解配置可以非常灵活的在代码中运用起来: springBoot学习笔记: .一.aop: 新建一个类HttpAspect,类上添 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(七) indigo PCL xtion pro live
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...
- Typescript 学习笔记七:泛型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Springboot学习笔记(六)-配置化注入
前言 前面写过一个Springboot学习笔记(一)-线程池的简化及使用,发现有个缺陷,打个比方,我这个线程池写在一个公用服务中,各项参数都定死了,现在有两个服务要调用它,一个服务的线程数通常很多,而 ...
- python3.4学习笔记(七) 学习网站博客推荐
python3.4学习笔记(七) 学习网站博客推荐 深入 Python 3http://sebug.net/paper/books/dive-into-python3/<深入 Python 3& ...
- Go语言学习笔记七: 函数
Go语言学习笔记七: 函数 Go语言有函数还有方法,神奇不.这有点像python了. 函数定义 func function_name( [parameter list] ) [return_types ...
- SpringBoot学习笔记(14):使用SpringBootAdmin管理监控你的应用
SpringBoot学习笔记(14):使用SpringBootAdmin管理监控你的应用 Spring Boot Admin是一个管理和监控Spring Boot应用程序的应用程序.本文参考文档: 官 ...
- iOS 学习笔记七 【博爱手把手教你使用2016年gitHub Mac客户端】
iOS 学习笔记七 [博爱手把手教你使用gitHub客户端] 第一步:首先下载git客户端 链接:https://desktop.github.com 第二步:fork 大神的代码[这里以我的代码为例 ...
- SpringBoot学习笔记(3):静态资源处理
SpringBoot学习笔记(3):静态资源处理 在web开发中,静态资源的访问是必不可少的,如:Html.图片.js.css 等资源的访问. Spring Boot 对静态资源访问提供了很好的支持, ...
随机推荐
- day01_虚拟机与主机之间ip配置
虚拟机1: centos_ node1 虚拟机2:centos_node2 宿主主机虚拟机ip配置: vmnet1 来自为知笔记(Wiz)
- R 数据类型
c()功能函数,产数据用 向量:一维数组,要求存放的数据类型一致 矩阵:二维数组,要求存放的数据类型一致,用通过matrix函数创建 数组:维度超过二维时建议用数组,用可araay函数创建 数据框:相 ...
- 5.6 安装Virtual box
本以为安装虚拟机很复杂的样子,经过kevin一指点,发现soeasy.废话少说,直接上图片: 将安装包放到自己的目录下: 安装完后,可以在搜索框中搜索:virtual 会出现安装好的虚拟机盒子.
- 1.6 xss挑战平台练习
------------------------- XSS挑战之旅 ------------------------- 最近在学习xss,找到了一个xss练习平台,在线地址:http://test.x ...
- linux下mysql远程链接
前言:我的系统是ubuntu,默认不支持mysql远程链接.接下来的步骤改变这点. 1,首先取消mysql本机绑定 编辑/etc/mysql/my.cnf 将”bind-address = 127.0 ...
- Linux进程KILL不掉的原因
做过Linux开发的人通常遇到过一个进程不能kill掉的情况,即使使用的是kill -9方式,而一般的教课书都只说kill -9能杀死任何进程,遇到这种情况时就会感觉到很矛盾,其它这也是正常的,通常有 ...
- 20169219linux 内核原理与分析第五周作业
进程调度 1. 进程调度是确保进程能有效工作的一个内核子进程.调度程序是像linux这样的多任务操作系统的基础.最大限度地利用处理器时间的原则是,只要有可以执行的进程,那么就总会有进程正在执行.但是只 ...
- Java实现WC基本功能
GitHub仓库:https://github.com/douyazai/WCbase 一.WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命 ...
- python sys.sdout.write 和print 区别
sys.sdout.write 标准输入相当于“%value%”,输出内容没有空格,而print输出带有空格,举个例子 用sys.sdout.write: import sys for i in ra ...
- JavaScript -- 实现密码加密的几种方案
base64加密 页面中引入base64.js var base=new Base64(); var str=base.encode('admin:admin'); //解密用: str=b.deco ...