AMQP操作流程代码分享详细说明

后台-系统设置-扩展变量-手机广告位-内容正文顶部

AMQP操作文档

一、发送消息:(示例:TestReceiver.java)

  1、声明注入

  @Autowired

  privateAmqpTemplateamqpTemplate;

  2、发送消息

  this.amqpTemplate.convertAndSend(AmqpExchange.TEST_EXCHANGE,

  AmqpExchange.TEST_EXCHANGE+"_ROUTING",

  putMessage);

  发送消息,第一个参数为枚举,String类型,代表接收的交换器名字。(为静态常量,位于AmqpExchange)

  第二个参数为字符串,指定接收路由,String类型,自行指定一个有意义的字串,全剧唯一(命名规范:交换机名称后缀_QUEUE,例如:MEMBER_LOGIN_QUEUE)第三个参数为发送的对象,object类型,接收器处理所需要的参数。无参需要写空字符串

二、处理消息(事例:TestReceiver.java)

  @RabbitListener(bindings=@QueueBinding(

  value=@Queue(value=AmqpExchange.TEST_EXCHANGE+"_QUEUE"),

  exchange=@Exchange(value=AmqpExchange.TEST_EXCHANGE,type=ExchangeTypes.FANOUT)

  ))

  publicvoidreceiver(Stringmessage){

  cache.put(cacheKey,message);

  }

  Queue.value命名规范:业务

  RabbitListener(bindings=@QueueBinding(value=@Queue(value="queue自定义名称,消费者定义,注意唯一"),exchange=@Exchange(value="交换机名称,静态常量")))

三、消息路由名称的定义

  路由的名字需要定义在以下常量中

  •   路径com.enation.app.javashop.core.base.AmqpExchange
  •   内容

  /**

  *PC首页变化消息

  */

  publicstaticfinalStringPC_INDEX_CHANGE="PC_INDEX_CHANGE";

  /**

  *移动端首页变化消息

  */

  publicstaticfinalStringMOBILE_INDEX_CHANGE="MOBILE_INDEX_CHANGE";

  /**

  *商品变化消息

  */

  publicstaticfinalStringGOODS_CHANGE="GOODS_CHANGE";

  /**

  *商品变化消息附带原因

  */

  publicstaticfinalStringGOODS_CHANGE_REASON="GOODS_CHANGE_REASON";

  /**

  *帮助变化消息

  */

  publicstaticfinalStringHELP_CHANGE="HELP_CHANGE";

  /**

  *页面生成消息

  */

  publicstaticfinalStringPAGE_CREATE="PAGE_CREATE";

  /**

  *索引生成消息

  */

  publicstaticfinalStringINDEX_CREATE="INDEX_CREATE";

  /**

  *订单创建消息

  *没有入库

  */

  publicstaticfinalStringORDER_CREATE="ORDER_CREATE";

  /**

  *入库失败消息

  *入库失败

  */

  publicstaticfinalStringORDER_INTODB_ERROR="ORDER_INTODB_ERROR";

  /**

  *订单状态变化消息

  *带入库的

  */

  publicstaticfinalStringORDER_STATUS_CHANGE="ORDER_STATUS_CHANGE";

  /**

  *会员登录消息

  */

  publicstaticfinalStringMEMEBER_LOGIN="MEMEBER_LOGIN";

  /**

  *会员注册消息

  */

  publicstaticfinalStringMEMEBER_REGISTER="MEMEBER_REGISTER";

  /**

  *店铺变更消息

  */

  publicstaticfinalStringSHOP_CHANGE_REGISTER="SHOP_CHANGE_REGISTER";

  /**

  *分类变更消息

  */

  publicstaticfinalStringGOODS_CATEGORY_CHANGE="GOODS_CATEGORY_CHANGE";

  /**

  *售后状态改变消息

  */

  publicstaticfinalStringREFUND_STATUS_CHANGE="REFUND_STATUS_CHANGE";

  /**

  *发送站内信息

  */

  publicstaticfinalStringMEMBER_MESSAGE="MEMBER_MESSAGE";

  /**

  *发送手机短信消息

  */

  publicstaticfinalString_SEND_MESSAGE="_SEND_MESSAGE";

  /**

  *邮件发送消息

  */

  publicstaticfinalStringEMAIL_SEND_MESSAGE="EMAIL_SEND_MESSAGE";

  /**

  *商品评论消息

  */

  publicstaticfinalStringGOODS_COMMENT_COMPLETE="GOODS_COMMENT_COMPLETE";

  /**

  *网上支付

  */

  publicstaticfinalStringONLINE_PAY="ONLINE_PAY";

  /**

  *完善个人资料

  */

  publicstaticfinalStringMEMBER_INFO_COMPLETE="MEMBER_INFO_COMPLETE";

四、延时任务

  延时任务的作用是可以指定一个任务在具体时间被触发。

  比如促销活动开始时主动触发一些动作,如写入缓存等。

  定义延时任务需要用到TimeTrigger接口,用法如下:

  @Autowired

  privateTimeTriggertimeTrigger;

  publicvoidmain(){

  //创建活动即通知mq

  PintuanChangeMsgpintuanChangeMsg=newPintuanChangeMsg();

  pintuanChangeMsg.setPintuanId(id);

  pintuanChangeMsg.setOptionType(1);

  //第一个参数,执行器

  //第二个参数,执行器执行调用的参数

  //第三个参数,执行日期

  //第四个参数,唯一key,可以为空,如果不需要操作更新或者删除延时任务的话

  //新增定时任务

  timeTrigger.add("pintuanTimeTriggerExecute",pintuanChangeMsg,activeDO.getStartTime(),"TIME_TRIGGER_PINTUAN_"+id);

  //修改定时任务

  timeTrigger.edit("pintuanTimeTriggerExecute",pintuanChangeMsg,activeDO.getStartTime(),"TIME_TRIGGER_PINTUAN_"+id);

  //删除

  timeTrigger.del("TIME_TRIGGER_PINTUAN_"+id);

  }

  在上述接口的第一个参数是一个执行器的beanName,当延迟任务被触发时,这个具体的执行器会被调用,执行器的实现举例如下:

  /**

  *执行器

  *

  *@authorChopper

  *@versionv1.0

  *@sincev7.0

  *2019-02-13下午5:34

  */

  @Component

  publicclassPintuanTimeTriggerExecuterimplementsTimeTriggerExecuter{

  /**

  *执行任务

  *

  *@paramobject任务参数

  */

  @Override

  publicvoidexecute(Objectobject){

  //这里的object就是在定义延迟任务时传递过来的msg

  }

  }

  以上就是AMQP操作文档的全部内容,想了解更多,可以持续关注易族智汇javashop

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

后台-系统设置-扩展变量-手机广告位-内容正文底部
留言与评论(共有 0 条评论)
   
验证码: