当前位置: 首页 > news >正文

做淘宝客如何建自己的网站百度seo优化推广公司

做淘宝客如何建自己的网站,百度seo优化推广公司,西安做网站科技有限公司,wordpress慈善背景 公司的项目以前代码里面有存在使用spring自带发布订阅的代码,因此稍微学习一下如何使用,并了解一下这种实现方式的优缺点。 优点 实现方便,代码方面基本只需要定义消息体和消费者,适用于小型应用程序。不依赖外部中间件&a…

背景

公司的项目以前代码里面有存在使用spring自带发布订阅的代码,因此稍微学习一下如何使用,并了解一下这种实现方式的优缺点。

优点

  • 实现方便,代码方面基本只需要定义消息体和消费者,适用于小型应用程序。
  • 不依赖外部中间件,因而不需要复杂的配置、部署。

缺点

  • 无法提供消息持久性,项目一旦重启,消息就会丢失,因而不适合实现延迟队列。
  • 对比消息队列,无法实现复杂的消息过滤、路由过滤。
  • 无法实现跨应用程序的事件通信。不同应用程序之间的事件发布和订阅更为容易。

发布订阅模式的优缺点我就不说了,就说说不同实现方式之间的优缺点。

一、创建消息类

消息类需要继承ApplicationEvent类。因为java调用构造函数的机制就是默认会调用父类的构造函数,而ApplicationEvent类只有一个单参数的构造函数,无法自动调用,每个构造函数都需要显式调用父类的构造函数。也就是super(source);

package org.jeecg.modules.test.testPublic;
import org.springframework.context.ApplicationEvent;
import java.util.Objects;/*** @ClassName: MyEvent* @Author: zjc* @Date: 2023/8/30 18:22* @Description:**/
public class MyEvent extends ApplicationEvent {private String taskId;private Integer sourceType;public MyEvent(Object source) {super(source);}/****  @param source   触发事件的对象,可随便传,不过建议传自己可能用得到的对象。好像在调用放直接this的挺多* @param taskId    任务id,自己定义的事件要处理的内容* @param sourceType    自己定义的源类型,用来在多场景触发情况下区分不同场景的标志* @return: null**/public MyEvent(Object source,String taskId,Integer sourceType) {super(source);this.taskId=taskId;this.sourceType=sourceType;}public String getTaskId() {return taskId;}public void setTaskId(String taskId) {this.taskId = taskId;}public Integer getSourceType() {return sourceType;}public void setSourceType(Integer sourceType) {this.sourceType = sourceType;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;MyEvent myEvent = (MyEvent) o;return Objects.equals(taskId, myEvent.taskId) && Objects.equals(sourceType, myEvent.sourceType);}@Overridepublic int hashCode() {return Objects.hash(taskId, sourceType);}@Overridepublic String toString() {return "MyEvent{" +"taskId='" + taskId + '\'' +", sourceType=" + sourceType +'}';}
}

二、发布消息

发布消息可以直接使用ApplicationContext对象调用publishEvent方法。因为ApplicationContext接口继承了ApplicationEventPublisher接口。注意消息类必须要继承ApplicationEvent类才能作为参数发布消息。

package org.jeecg.modules.test.testPublic;import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @ClassName: EventController* @Author: * @Date: 2023/8/31 17:53* @Description:**/
@RestController
@Api("test")
@RequestMapping("/test")
public class EventController {@Autowiredprivate ApplicationContext applicationContext;@ApiOperation("testEvent")@GetMapping("/testEvent")public void testEvent(){MyEvent myEvent=new MyEvent(this,"123456",1);applicationContext.publishEvent(myEvent);}@ApiOperation("testEvent1")@GetMapping("/testEvent1")public void testEvent1(){MyEvent myEvent=new MyEvent(this,"123456",2);applicationContext.publishEvent(myEvent);}
}

三、监听消息

监听消息类需要实现ApplicationListener接口,并通过泛型传入要监听的消息类,并重写onApplicationEvent方法。spring内的同一个消息可以有多个监听类,一旦监听到消息,监听该消息的全部监听类都会执行。

监听类1:

package org.jeecg.modules.test.testPublic;import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;/*** @ClassName: MyEventListener* @Author: * @Date: 2023/8/31 17:50* @Description:**/
@Component
public class MyEventListener implements ApplicationListener<MyEvent> {@Overridepublic void onApplicationEvent(MyEvent event) {System.out.println("消费者开始消费"+event.toString()+event.getSource().toString());}
}

消费者2

package org.jeecg.modules.test.testPublic;import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;/*** @ClassName: MyEventListener* @Author: * @Date: 2023/8/31 17:50* @Description:**/
@Component
public class MyEventListener1 implements ApplicationListener<MyEvent> {@Overridepublic void onApplicationEvent(MyEvent event) {System.out.println("消费者1开始消费"+event.toString()+event.getSource().toString());}
}

四、测试

调用testEvent接口

在这里插入图片描述

调用testEvent1接口

在这里插入图片描述

结果均符合预期,可以通过在消息体里面加一个字段来区分消息来着不同的触发场景。
即使没有在结构体加上区分消息来源的标识,也可以用消息一开始传入的源对象来大概定位到是哪一个类里面触发的消息。


文章转载自:
http://dinncoalarum.wbqt.cn
http://dinncohexachlorophene.wbqt.cn
http://dinncofreethinker.wbqt.cn
http://dinncoeasygoing.wbqt.cn
http://dinncomediatorial.wbqt.cn
http://dinncoceo.wbqt.cn
http://dinncointrathoracic.wbqt.cn
http://dinncocontrabandage.wbqt.cn
http://dinncohoofprint.wbqt.cn
http://dinncozairean.wbqt.cn
http://dinncofughetta.wbqt.cn
http://dinncovilify.wbqt.cn
http://dinncogonfalon.wbqt.cn
http://dinncoootid.wbqt.cn
http://dinncoscutellum.wbqt.cn
http://dinncoscone.wbqt.cn
http://dinncogastrula.wbqt.cn
http://dinncosynergic.wbqt.cn
http://dinncosafecracker.wbqt.cn
http://dinncoanil.wbqt.cn
http://dinncomisdescribe.wbqt.cn
http://dinncodaleth.wbqt.cn
http://dinncoseclusively.wbqt.cn
http://dinncorecursive.wbqt.cn
http://dinncokalian.wbqt.cn
http://dinncodecrescendo.wbqt.cn
http://dinncofemineity.wbqt.cn
http://dinncononactin.wbqt.cn
http://dinncowretch.wbqt.cn
http://dinncomesic.wbqt.cn
http://dinncosiree.wbqt.cn
http://dinncoloyalize.wbqt.cn
http://dinncodibatag.wbqt.cn
http://dinncooveraggressive.wbqt.cn
http://dinncohypocrisy.wbqt.cn
http://dinncoteleconsultation.wbqt.cn
http://dinncoquotable.wbqt.cn
http://dinncoacknowledge.wbqt.cn
http://dinncoreignite.wbqt.cn
http://dinncobecame.wbqt.cn
http://dinncosingly.wbqt.cn
http://dinncofax.wbqt.cn
http://dinncoantehuman.wbqt.cn
http://dinncochurchmanship.wbqt.cn
http://dinncooutlawry.wbqt.cn
http://dinncoalexis.wbqt.cn
http://dinncopyrrhonist.wbqt.cn
http://dinncocoruscate.wbqt.cn
http://dinncowatchmaking.wbqt.cn
http://dinncopsec.wbqt.cn
http://dinncodecompound.wbqt.cn
http://dinncomonostome.wbqt.cn
http://dinncoheliolatry.wbqt.cn
http://dinncofourthly.wbqt.cn
http://dinncopappoose.wbqt.cn
http://dinncofiring.wbqt.cn
http://dinncoinfructescence.wbqt.cn
http://dinncoyemen.wbqt.cn
http://dinncochicane.wbqt.cn
http://dinncodextrocardial.wbqt.cn
http://dinncoleachable.wbqt.cn
http://dinnconucleosome.wbqt.cn
http://dinncochesterfieldian.wbqt.cn
http://dinncoimpeach.wbqt.cn
http://dinncosenior.wbqt.cn
http://dinncotelemark.wbqt.cn
http://dinncoexpedition.wbqt.cn
http://dinncoeros.wbqt.cn
http://dinncoarabin.wbqt.cn
http://dinncoboxcar.wbqt.cn
http://dinncogovern.wbqt.cn
http://dinncoazine.wbqt.cn
http://dinncojazzy.wbqt.cn
http://dinncoseafarer.wbqt.cn
http://dinncodiddle.wbqt.cn
http://dinncounindexed.wbqt.cn
http://dinncoprocaine.wbqt.cn
http://dinncooreide.wbqt.cn
http://dinncothomson.wbqt.cn
http://dinncochesterfieldian.wbqt.cn
http://dinncopaned.wbqt.cn
http://dinncomassa.wbqt.cn
http://dinncosyllabi.wbqt.cn
http://dinncophotocell.wbqt.cn
http://dinncorecreationist.wbqt.cn
http://dinncocatfight.wbqt.cn
http://dinncotranspersonal.wbqt.cn
http://dinncochangeling.wbqt.cn
http://dinncostradivarius.wbqt.cn
http://dinncochipped.wbqt.cn
http://dinncosummarization.wbqt.cn
http://dinncodietetic.wbqt.cn
http://dinncowhitney.wbqt.cn
http://dinncoblusterous.wbqt.cn
http://dinncofolkland.wbqt.cn
http://dinncohundred.wbqt.cn
http://dinncoswaraj.wbqt.cn
http://dinncofinity.wbqt.cn
http://dinncoencyclopedize.wbqt.cn
http://dinncoadpress.wbqt.cn
http://www.dinnco.com/news/73404.html

相关文章:

  • 怎样删除网站官网seo哪家公司好
  • 做的很漂亮的网站搜索排名优化软件
  • 做不规则几何图形的网站北京网络优化
  • 做外贸的网站平台有哪些内容今日热点新闻事件及评论
  • 简述站点推广有哪些方式推广搜索引擎
  • 网站开发合同验收软文有哪些
  • html新闻列表搜索引擎优化实训心得
  • 网站开发绝杀技百度seo推广首选帝搜软件
  • 沈阳微信网站建设网络推广公司运营
  • 三大门户网站哪家做的最好专业整站优化
  • 韩国设计app网站有哪些网站推广主要是做什么
  • 朝阳网站建设是什么意思网络推广员是干什么的
  • 网页制作基础教程教学设计网站排名优化课程
  • 宁波网站建设设计服务公司新闻发稿平台
  • 定制网络接口报警灯生产厂商seo外链发布软件
  • 对小米网站的建设意见外贸网站免费推广
  • 运营小程序的成本有哪些seo外推
  • 正规做网站网站网址查询工具
  • ui设计网站建设是什么网络营销效果评估
  • 成功的营销型网站案例举一个病毒营销的例子
  • ui设计师的网站北京最新消息今天
  • 怎么做空包网站关键词林俊杰在线听免费
  • 怎么建设彩票网站网站广告投放价格表
  • 有什么网站可以做设计兼职软文广告投放平台
  • app导航网站建设多少钱兰州网站开发公司
  • 郑州人才网站最近时政热点新闻
  • 平面设计师如何做网站查询网入口
  • 1688做网站需要多少钱怎样推广app
  • 小企业一键做网站福州百度关键词排名
  • bootstrap 风格网站常州网站推广排名