springboot 学习笔记(七)
2019-01-21 02:40:00来源:博客园 阅读 ()
(七)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; } }
(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()); } }
(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与对象的转换,相对来说这样的方式更加安全。
原文链接:https://www.cnblogs.com/codingstudy/p/10287397.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- springboot2配置JavaMelody与springMVC配置JavaMelody 2020-06-11
- 学习Java 8 Stream Api (4) - Stream 终端操作之 collect 2020-06-11
- java学习之第一天 2020-06-11
- Java学习之第二天 2020-06-11
- SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash