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 对静态资源访问提供了很好的支持, ...
随机推荐
- url传参解决中文乱码
跳转前: window.open("http://localhost:9728/content/agent/devolution.html?search_agent=" + enc ...
- 在Action获取Scope对象
引言:在前面的Action操作中,关键就是Action中的exectue方法,但是此方法并没有request.session.application等对象作为参数,自然就不能利用这些对象来操作.下面我 ...
- 华为USG6320做双线-基于源地址的策略路由
通过配置策略路由实现不同源地址数据通过不同的链路转发. 组网需求 某企业公司拉了两条电信的光纤,分别为静态光纤和拨号光纤,前者主要用于服务器,后者则用于一般办公. 需求如下: 静态光纤:服务器专用 拨 ...
- [51nod1212]最小生成树模板
解题关键:注意下标 解法一:prim算法 #include<bits/stdc++.h> #define maxv 1002 #define maxm 50002 #define INF ...
- SSM集成shiro 致使Controller无法自动注册service
由于shiro在web.xml中配置属于过滤器,其中在web.xml中的加载顺序为: <context-param>(上下文) > listener > filter > ...
- Hive Joins 用法与操作
Hive表连接的语法支持如下: join_table: table_reference JOIN table_factor [join_condition] | table_reference {LE ...
- Git删除master branch中最近一次的提交
在做一个项目的过程中,需要删除master brach中最近一次的提交,需要在Git repository中删除 采用步骤如下: 1. 在Visual Studio中打开项目,进入到master br ...
- setTimeout关于函数名做参数的问题
前几天在调bug时发现一个诡异的问题. function test(){ alert('4 seconds!'); } setTimeout(test(),4000); 这段代码立即执行,当时看不出问 ...
- cc和gcc
cc就是一个链接文件连接到gcc中.只不过cc是unix中常用的编辑工具,而在linux中用的gcc.有一些在unix中写好的程序要放在linux中,所以要指定命令cc为gcc,其实一样.用where ...
- 7.26实习培训日志-Oracle SQL(二)
Oracle SQL(二) 条件表达式 CASE 语句 或者DECODE 函数,两者均可实现 IF-THEN-ELSE 的逻辑,相比较而言,DECODE 更加简洁 SELECT last_name , ...