添加商品

需要同步索引库,同步缓存,生成静态页面等等
很多地方,都需要监听添加商品的事件,所以,这里使用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添加商品发送消息相关推荐

  1. ActiveMQ添加商品接收消息

    Destination 配置信息 <!-- 配置消息的Destination对象 --> <bean id="test-queue" class="or ...

  2. activeMQ高并发发送消息异常解决方法

    高并发发送消息异常解决方法: 现象:使用10个线程每100ms发送一条消息,大约3000多条后,出现异常,所有线程停 止: javax.jms.JMSException:Could not conne ...

  3. ibm linux mq 发送消息_RabbitMq、ActiveMq、Kafka和Redis做Mq对比

    一.RabbitMq RabbitMQ是一个Advanced Message Queuing Protocol(AMQP)的开源实现,由以高性能.可伸缩性出名的Erlang写成.RabbitMQ Se ...

  4. 【Android WebSocket】Android 端 WebSocket 基本用法 ( 添加依赖和权限 | 创建 WebSocketClient 客户端类 | 建立连接并发送消息 )

    文章目录 一.添加依赖和权限 二.创建 WebSocketClient 客户端类 三.建立连接并发送消息 使用 https://github.com/TooTallNate/Java-WebSocke ...

  5. ActiveMQ 部署及发送接收消息

    ActiveMQ 部署及发送接收消息 一.           下载 下载地址:http://activemq.apache.org/ 我这里使用的版本为当前最新5.8.0. 下载版本有Windows ...

  6. ActiveMQ入门-发送消息机制的介绍

    消息队列的几种角色:消息队列是系统之间发消息的,会有消息的发送者(生产者),会有消息的接受者(消费者),还有一个用来存储并且发送消息的容器,这个容易叫消息队列 ActiveMQ发消息的方式有两种:Qu ...

  7. ActiveMQ使用spring JmsTemplate发送消息(一)

    下载地址:http://activemq.apache.org/download-archives.html 解压 启动bin\activemq.bat 生产者接口: public interface ...

  8. SAP ABAP 添加企业微信群机器人并调用 API 发送消息

    SAP ABAP 添加企业微信群机器人并调用 API 发送消息 引言: 这篇文章以我在个人开源项目"任务管理服务(ZTASK)"中的应用为例,通过讲述使用企业微信机器人实现任务的通 ...

  9. springBoot使用activeMQ发送消息,错误This class is not trusted to be serialized as ObjectMessage payload.

    原因是因为他不支持 对象作为消息进行发送.但是他支持string,byte,序列化,数字类型. 所以将对象转换为byte数组,在转换为对象解析即可 附上相关转换代码. 转换类的名字我叫做DataPro ...

最新文章

  1. JPA不同包下同类名查询出错
  2. 只需3行代码自动生成高性能模型,支持4项任务,亚马逊发布开源库AutoGluon
  3. 《嵌入式Linux与物联网软件开发——C语言内核深度解析》一第1章 C语言与内存1.1 引言...
  4. C#中数值型数据保留N位小数方法
  5. 高防服务器租用:DDoS保护关键主题与防御保护性质
  6. apex图表使用饼图居中_echarts饼图标题居中以及调整主副标题的间距、字号
  7. Hive中JOIN的使用入门
  8. undefined reference 问题各种情况分析
  9. 德州计算机速成班培训,德州办公软件培训速成班
  10. Golang Json文件解析为结构体工具-json2go
  11. 关于以太网PAUSE的一点研究
  12. CSS线性渐变网站记录
  13. 吐个槽:bose的售后真心差劲!愧对这个顶级音响产品!
  14. bypy更换绑定的百度云盘账户
  15. 供应链金融融资的业务模式
  16. 计算机键盘打不出字来了,电脑键盘打不出来字怎么办?
  17. Python对象赋值和拷贝
  18. ICC图文流程——(三)布局Placement
  19. 苹果电脑怎么无痕浏览网页
  20. 学习python第一天

热门文章

  1. oracle数据库操作
  2. 安卓高级6 拍照或者从相册获取图片 并检测旋转角度或者更新画册扫描
  3. Nmap扫描参数解析(转)
  4. Unity屏幕射线碰撞
  5. 放苹果问题 POJ 1664
  6. mysql空洞_optimize table 删除空洞--MYSQL
  7. 区块链BaaS云服务(36)欧盟EBSI“使用场景”
  8. 区块链BaaS云服务(17)纸贵科技Z-BaaS“数据治理”
  9. 基于区块链的健康链系统设计与实现(2)区块链平台Web服务器
  10. 初等数论--整除--公因数一定是最大公因数的因数