(七)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 学习笔记(七)的更多相关文章

  1. (转)Qt Model/View 学习笔记 (七)——Delegate类

    Qt Model/View 学习笔记 (七) Delegate  类 概念 与MVC模式不同,model/view结构没有用于与用户交互的完全独立的组件.一般来讲, view负责把数据展示 给用户,也 ...

  2. SpringBoot学习笔记

    SpringBoot个人感觉比SpringMVC还要好用的一个框架,很多注解配置可以非常灵活的在代码中运用起来: springBoot学习笔记: .一.aop: 新建一个类HttpAspect,类上添 ...

  3. Learning ROS for Robotics Programming Second Edition学习笔记(七) indigo PCL xtion pro live

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...

  4. Typescript 学习笔记七:泛型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  5. Springboot学习笔记(六)-配置化注入

    前言 前面写过一个Springboot学习笔记(一)-线程池的简化及使用,发现有个缺陷,打个比方,我这个线程池写在一个公用服务中,各项参数都定死了,现在有两个服务要调用它,一个服务的线程数通常很多,而 ...

  6. python3.4学习笔记(七) 学习网站博客推荐

    python3.4学习笔记(七) 学习网站博客推荐 深入 Python 3http://sebug.net/paper/books/dive-into-python3/<深入 Python 3& ...

  7. Go语言学习笔记七: 函数

    Go语言学习笔记七: 函数 Go语言有函数还有方法,神奇不.这有点像python了. 函数定义 func function_name( [parameter list] ) [return_types ...

  8. SpringBoot学习笔记(14):使用SpringBootAdmin管理监控你的应用

    SpringBoot学习笔记(14):使用SpringBootAdmin管理监控你的应用 Spring Boot Admin是一个管理和监控Spring Boot应用程序的应用程序.本文参考文档: 官 ...

  9. iOS 学习笔记七 【博爱手把手教你使用2016年gitHub Mac客户端】

    iOS 学习笔记七 [博爱手把手教你使用gitHub客户端] 第一步:首先下载git客户端 链接:https://desktop.github.com 第二步:fork 大神的代码[这里以我的代码为例 ...

  10. SpringBoot学习笔记(3):静态资源处理

    SpringBoot学习笔记(3):静态资源处理 在web开发中,静态资源的访问是必不可少的,如:Html.图片.js.css 等资源的访问. Spring Boot 对静态资源访问提供了很好的支持, ...

随机推荐

  1. hadoop mapreduce 计算平均气温的代码,绝对原创

    1901 46 1902 21 1903 48 1904 33 1905 43 1906 47 1907 31 1908 28 1909 26 1910 35 1911 30 1912 16 1913 ...

  2. cisco 2901 配置拨号上网

    1.输入en,然后输入密码确认后按conf t2.Router(config)# vpdn enable        interface dialer 1   // 进入拨号器13.Router(c ...

  3. 转:Linux下用Jmeter做接口测试

    本地设计 首先在本地设计 Apache JMeter 测试计划,大家可以参考<接口测试之 JMeter 初探> ,这里不再重复. 服务器配置 确保服务器已经安装了JDK和Python. 在 ...

  4. 我的笔记文档版本控制系统-MediaWiki-安装/基本设置

    如果你一直想要一个可以进行版本控制的文档存储工具,那MediaWiki是一个不错的选择.也许,用版本控制来描述MediaWiki有点不妥,但它对于我来说就是如此了.我会将学习笔记都记录在MediaWi ...

  5. JavaScript学习系列6 -- JavaScript中的垃圾回收(内存释放)

    程序开发中,涉及到的内存生命周期基本是一样的,分为以下三步 1. 分配需要的内存 2. 使用分配到的内存 3. 释放其内存    ----什么时候释放内存,以及需要释放哪些变量的内存, 就是垃圾回收机 ...

  6. HN669打包工具--游戏对接

    一. 将游戏工程拖入到工具的HN669Ploy目录下,如下图: 二. xCode打开游戏工程,将Core目录下的HN669SDKCore工程添加入游戏工程,并引用库,如图:   三.调用API 1.A ...

  7. Socket通信常见问题

    1.检查服务器防火墙入站规则,是否允许对应端口通过.如果是云服务器,还需要通过对应账户去设置安全规则 2.服务端监听或绑定端口时,最好使用IPAddress.Any监听所有网口的改端口,创建socke ...

  8. datagrid 绑定选中数据,列头全选

    成品图: xaml代码 <Grid> <DataGrid x:Name="datagrid" Height="Auto" Width=&quo ...

  9. 移动web 的viewport设置注意事项的详细解释 六一快乐=-_-_

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. 基础篇:MySQL系列之三

    一.MySQL简介 ​ MySQL原本是一个开放源代码的关系数据库管理系统,原开发者为瑞典的MySQL AB公司,该公司于2008年被Sun公司收购.2009年,Oracle收购sun公司,MySQL ...