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 对静态资源访问提供了很好的支持, ...
随机推荐
- (转)JAVA中的权限修饰符
注:本博文是转载的,原文地址:http://blog.csdn.net/xk632172748/article/details/51755438 Java中修饰符总结: 访问控制修饰符 访问控制修饰符 ...
- 使用showMessageDialog显示消息框
-----------------siwuxie095 工程名:TestJOptionPane 包名:com.siwuxie095.showdialog ...
- koa2,koa1框架安装
koa2版本安装: npm install koa@ -g hello2.js var Koa = require('koa'); var app = new Koa(); app.use(ctx = ...
- hive-0.12.0-cdh5.1.0安装
先前条件: 要先安装好MYSQL 下载:hive-0.12.0-cdh5.1.0.tar.gz,并解压到安装目录 1. 添加环境变量 修改/etc/profile文件. #vi /etc/profil ...
- 我的笔记文档版本控制系统-MediaWiki-回到顶部/链接放大/升级
为了练习自己的JS.CSS基本功,这些天和MediaWiki干上了!^_^ 下面是我的MediaWiki新添加的功能: 回到顶部 链接放大 MediaWiki升级 回到顶部 回到顶部是很多网站的基本功 ...
- Git merge一个branch到另一个branch
在项目开发过程中,需要merge一个branch (branch名 taskBranch) 到另一个名为develop 的branch 方法: 先保证当前停留在develop的branch上 然后执行 ...
- Codeforces Round #279 (Div. 2) C. Hacking Cypher (大数取余)
题目链接 C. Hacking Cyphertime limit per test1 secondmemory limit per test256 megabytesinputstandard inp ...
- SAS笔记(6) PROC MEANS和PROC FREQ
PROC MEANS和PRC FREQ在做描述性分析的时候很常用,用法也比较简单,不过这两个过程步的某些选项容易忘记,本文就梳理一下. 在进入正文前,我们先创建所需的数据集TEST_SCORES: D ...
- Codeforces Round #558 (Div. 2)B(SET,模拟)
#include<bits/stdc++.h>using namespace std;int a[100007];int cnt[100007];int main(){ int n; ...
- 软件包管理(rpm&yum)
一.rpm包管理器 rpm是一个功能强大的包管理工具,可用于构建,安装,查询,验证,更新和卸载软件包. 用法: rpm [OPTION...] 配置文件: /var/lib/rpm/ 已安装rpm包的 ...