ActiveMQ添加商品发送消息
添加商品
需要同步索引库,同步缓存,生成静态页面等等
很多地方,都需要监听添加商品的事件,所以,这里使用Topic模式
方案选择
方案一:直接写业务逻辑
在商品服务模块,添加商品的业务逻辑中,添加同步索引库的业务逻辑
缺点:业务逻辑耦合度高,业务拆分不明确
方案二:模块之间服务调用
在商品服务模块,添加商品业务逻辑服务中,调用索引服务模块,添加索引的服务,业务逻辑分开,通过服务调用
缺点:服务之间耦合度高,服务的启动有先后顺序
方案三:使用消息队列
在商品服务模块,添加商品业务逻辑中,通过消息中间件发布消息,然后索引模块中,通过监听接收消息,并添加索引
消息中间件可以使用ActiveMQ、RabbitMQ、kafka
JMSTemplate
配置信息
<!-- 配置JMSTemplate -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"><property name="connectionFactory" ref="connectionFactory"/>
</bean>
<!-- 配置消息的Destination对象 -->
<bean id="test-queue" class="org.apache.activemq.command.ActiveMQQueue"><constructor-arg name="name" value="test-queue"></constructor-arg>
</bean>
<bean id="itemAddtopic" class="org.apache.activemq.command.ActiveMQTopic"><constructor-arg name="name" value="item-add-topic"></constructor-arg>
</bean>
添加商品
向Activemq发送,商品添加消息
@Service
public class ItemServiceImpl implements ItemService {@Autowiredprivate TbItemMapper itemMapper;@Autowiredprivate TbItemDescMapper itemDescMapper;@Autowiredprivate JmsTemplate jmsTemplate;@Resource(name="itemAddtopic")private Destination destination;@Overridepublic TaotaoResult addItem(TbItem item, String desc) {//生成商品idfinal long itemId = IDUtils.genItemId();//补全item的属性item.setId(itemId);//商品状态,1-正常,2-下架,3-删除item.setStatus((byte) 1);item.setCreated(new Date());item.setUpdated(new Date());//向商品表插入数据itemMapper.insert(item);//创建一个商品描述表对应的pojoTbItemDesc itemDesc = new TbItemDesc();//补全pojo的属性itemDesc.setItemId(itemId);itemDesc.setItemDesc(desc);itemDesc.setUpdated(new Date());itemDesc.setCreated(new Date());//向商品描述表插入数据itemDescMapper.insert(itemDesc);//向Activemq发送商品添加消息jmsTemplate.send(destination, new MessageCreator() {@Overridepublic Message createMessage(Session session) throws JMSException {//发送商品idTextMessage textMessage = session.createTextMessage(itemId + "");return textMessage;}});//返回结果return TaotaoResult.ok();}}
ActiveMQ添加商品发送消息相关推荐
- ActiveMQ添加商品接收消息
Destination 配置信息 <!-- 配置消息的Destination对象 --> <bean id="test-queue" class="or ...
- activeMQ高并发发送消息异常解决方法
高并发发送消息异常解决方法: 现象:使用10个线程每100ms发送一条消息,大约3000多条后,出现异常,所有线程停 止: javax.jms.JMSException:Could not conne ...
- ibm linux mq 发送消息_RabbitMq、ActiveMq、Kafka和Redis做Mq对比
一.RabbitMq RabbitMQ是一个Advanced Message Queuing Protocol(AMQP)的开源实现,由以高性能.可伸缩性出名的Erlang写成.RabbitMQ Se ...
- 【Android WebSocket】Android 端 WebSocket 基本用法 ( 添加依赖和权限 | 创建 WebSocketClient 客户端类 | 建立连接并发送消息 )
文章目录 一.添加依赖和权限 二.创建 WebSocketClient 客户端类 三.建立连接并发送消息 使用 https://github.com/TooTallNate/Java-WebSocke ...
- ActiveMQ 部署及发送接收消息
ActiveMQ 部署及发送接收消息 一. 下载 下载地址:http://activemq.apache.org/ 我这里使用的版本为当前最新5.8.0. 下载版本有Windows ...
- ActiveMQ入门-发送消息机制的介绍
消息队列的几种角色:消息队列是系统之间发消息的,会有消息的发送者(生产者),会有消息的接受者(消费者),还有一个用来存储并且发送消息的容器,这个容易叫消息队列 ActiveMQ发消息的方式有两种:Qu ...
- ActiveMQ使用spring JmsTemplate发送消息(一)
下载地址:http://activemq.apache.org/download-archives.html 解压 启动bin\activemq.bat 生产者接口: public interface ...
- SAP ABAP 添加企业微信群机器人并调用 API 发送消息
SAP ABAP 添加企业微信群机器人并调用 API 发送消息 引言: 这篇文章以我在个人开源项目"任务管理服务(ZTASK)"中的应用为例,通过讲述使用企业微信机器人实现任务的通 ...
- springBoot使用activeMQ发送消息,错误This class is not trusted to be serialized as ObjectMessage payload.
原因是因为他不支持 对象作为消息进行发送.但是他支持string,byte,序列化,数字类型. 所以将对象转换为byte数组,在转换为对象解析即可 附上相关转换代码. 转换类的名字我叫做DataPro ...
最新文章
- JPA不同包下同类名查询出错
- 只需3行代码自动生成高性能模型,支持4项任务,亚马逊发布开源库AutoGluon
- 《嵌入式Linux与物联网软件开发——C语言内核深度解析》一第1章 C语言与内存1.1 引言...
- C#中数值型数据保留N位小数方法
- 高防服务器租用:DDoS保护关键主题与防御保护性质
- apex图表使用饼图居中_echarts饼图标题居中以及调整主副标题的间距、字号
- Hive中JOIN的使用入门
- undefined reference 问题各种情况分析
- 德州计算机速成班培训,德州办公软件培训速成班
- Golang Json文件解析为结构体工具-json2go
- 关于以太网PAUSE的一点研究
- CSS线性渐变网站记录
- 吐个槽:bose的售后真心差劲!愧对这个顶级音响产品!
- bypy更换绑定的百度云盘账户
- 供应链金融融资的业务模式
- 计算机键盘打不出字来了,电脑键盘打不出来字怎么办?
- Python对象赋值和拷贝
- ICC图文流程——(三)布局Placement
- 苹果电脑怎么无痕浏览网页
- 学习python第一天