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

使用 私有云 做视频网站网站内容管理软件

使用 私有云 做视频网站,网站内容管理软件,wordpress phpdisk,如何做网站百科2019独角兽企业重金招聘Python工程师标准 之前在写Spring Boot基础教程的时候写过一篇《Spring Boot中使用RabbitMQ》。在该文中#xff0c;我们通过简单的配置和注解就能实现向RabbitMQ中生产和消费消息。实际上我们使用的对RabbitMQ的starter就是通过Spring C… 2019独角兽企业重金招聘Python工程师标准 之前在写Spring Boot基础教程的时候写过一篇《Spring Boot中使用RabbitMQ》。在该文中我们通过简单的配置和注解就能实现向RabbitMQ中生产和消费消息。实际上我们使用的对RabbitMQ的starter就是通过Spring Cloud Stream中对RabbitMQ的支持来实现的。下面我们就通过本文来了解一下Spring Cloud Stream。 Spring Cloud Stream是一个用来为微服务应用构建消息驱动能力的框架。它可以基于Spring Boot来创建独立的、可用于生产的Spring应用程序。它通过使用Spring Integration来连接消息代理中间件以实现消息事件驱动的微服务应用。Spring Cloud Stream为一些供应商的消息中间件产品提供了个性化的自动化配置实现并且引入了发布-订阅、消费组以及消息分区这三个核心概念。简单的说Spring Cloud Stream本质上就是整合了Spring Boot和Spring Integration实现了一套轻量级的消息驱动的微服务框架。通过使用Spring Cloud Stream可以有效地简化开发人员对消息中间件的使用复杂度让系统开发人员可以有更多的精力关注于核心业务逻辑的处理。由于Spring Cloud Stream基于Spring Boot实现所以它秉承了Spring Boot的优点实现了自动化配置的功能帮忙我们可以快速的上手使用但是目前为止Spring Cloud Stream只支持下面两个著名的消息中间件的自动化配置 RabbitMQKafka快速入门 下面我们通过构建一个简单的示例来对Spring Cloud Stream有一个初步认识。该示例主要目标是构建一个基于Spring Boot的微服务应用这个微服务应用将通过使用消息中间件RabbitMQ来接收消息并将消息打印到日志中。所以在进行下面步骤之前请先确认已经在本地安装了RabbitMQ具体安装步骤请参考此文。 构建一个Spring Cloud Stream消费者 创建一个基础的Spring Boot工程命名为stream-hello 编辑pom.xml中的依赖关系引入Spring Cloud Stream对RabbitMQ的支持具体如下 parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion1.5.9.RELEASE/versionrelativePath/ !-- lookup parent from repository -- /parentdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-stream-rabbit/artifactId /dependency /dependenciesdependencyManagementdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversionDalston.SR4/versiontypepom/typescopeimport/scope/dependency/dependencies /dependencyManagement创建用于接收来自RabbitMQ消息的消费者SinkReceiver具体如下EnableBinding(Sink.class) public class SinkReceiver {private static Logger logger LoggerFactory.getLogger(SinkReceiver.class);StreamListener(Sink.INPUT)public void receive(Object payload) {logger.info(Received: payload);}}创建应用主类这里同其他Spring Boot一样没有什么特别之处具体如下SpringBootApplication public class SinkApplication {public static void main(String[] args) {SpringApplication.run(SinkApplication.class, args);}}到这里我们快速入门示例的编码任务就已经完成了。下面我们分别启动RabbitMQ以及该Spring Boot应用然后做下面的试验看看它们是如何运作的。 手工测试验证 我们先来看一下Spring Boot应用的启动日志。... INFO 16272 --- [main] o.s.c.s.b.r.RabbitMessageChannelBinder : declaring queue for inbound: input.anonymous.Y8VsFILmSC27eS5StsXp6A, bound to: input INFO 16272 --- [main] o.s.a.r.c.CachingConnectionFactory : Created new connection: SimpleConnection3c78e551 [delegateamqp://guest127.0.0.1:5672/] INFO 16272 --- [main] o.s.integration.channel.DirectChannel : Channel input.anonymous.Y8VsFILmSC27eS5StsXp6A.bridge has 1 subscriber(s). INFO 16272 --- [main] o.s.i.a.i.AmqpInboundChannelAdapter : started inbound.input.anonymous.Y8VsFILmSC27eS5StsXp6A ...从上面的日志内容中我们可以获得以下信息 使用guest用户创建了一个指向127.0.0.1:5672位置的RabbitMQ连接在RabbitMQ的控制台中我们也可以发现它。 声明了一个名为input.anonymous.Y8VsFILmSC27eS5StsXp6A的队列并通过RabbitMessageChannelBinder将自己绑定为它的消费者。这些信息我们也能在RabbitMQ的控制台中发现它们。 下面我们可以在RabbitMQ的控制台中进入input.anonymous.Y8VsFILmSC27eS5StsXp6A队列的管理页面通过Publish Message功能来发送一条消息到该队列中。 此时我们可以在当前启动的Spring Boot应用程序的控制台中看到下面的内容 INFO 16272 --- [C27eS5StsXp6A-1] com.didispace.HelloApplication : Received: [B7cba610e我们可以发现在应用控制台中输出的内容就是SinkReceiver中receive方法定义的而输出的具体内容则是来自消息队列中获取的对象。这里由于我们没有对消息进行序列化所以输出的只是该对象的引用在后面的小节中我们会详细介绍接收消息后的处理。 在顺利完成上面快速入门的示例后我们简单解释一下上面的步骤是如何将我们的Spring Boot应用连接上RabbitMQ来消费消息以实现消息驱动业务逻辑的。 首先我们对Spring Boot应用做的就是引入spring-cloud-starter-stream-rabbit依赖该依赖包是Spring Cloud Stream对RabbitMQ支持的封装其中包含了对RabbitMQ的自动化配置等内容。从下面它定义的依赖关系中我们还可以知道它等价于spring-cloud-stream-binder-rabbit依赖。 dependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-stream-binder-rabbit/artifactId/dependency /dependencies接着我们再来看看这里用到的几个Spring Cloud Stream的核心注解它们都被定义在SinkReceiver中 EnableBinding该注解用来指定一个或多个定义了Input或Output注解的接口以此实现对消息通道Channel的绑定。在上面的例子中我们通过EnableBinding(Sink.class)绑定了Sink接口该接口是Spring Cloud Stream中默认实现的对输入消息通道绑定的定义它的源码如下public interface Sink {String INPUT input;Input(Sink.INPUT)SubscribableChannel input();}它通过Input注解绑定了一个名为input的通道。除了Sink之外Spring Cloud Stream还默认实现了绑定output通道的Source接口还有结合了Sink和Source的Processor接口实际使用时我们也可以自己通过Input和Output注解来定义绑定消息通道的接口。当我们需要为EnableBinding指定多个接口来绑定消息通道的时候可以这样定义EnableBinding(value {Sink.class, Source.class})。 StreamListener该注解主要定义在方法上作用是将被修饰的方法注册为消息中间件上数据流的事件监听器注解中的属性值对应了监听的消息通道名。在上面的例子中我们通过StreamListener(Sink.INPUT)注解将receive方法注册为对input消息通道的监听处理器所以当我们在RabbitMQ的控制页面中发布消息的时候receive方法会做出对应的响应动作。编写消费消息的单元测试用例 上面我们通过RabbitMQ的控制台完成了发送消息来验证了消息消费程序的功能虽然这种方法比较low但是通过上面的步骤相信大家对RabbitMQ和Spring Cloud Stream的消息消费已经有了一些基础的认识。下面我们通过编写生产消息的单元测试用例来完善我们的入门内容。 在上面创建的工程中创建单元测试类RunWith(SpringRunner.class) EnableBinding(value {SinkApplicationTests.SinkSender.class}) public class SinkApplicationTests {Autowiredprivate SinkSender sinkSender;Testpublic void sinkSenderTester() {sinkSender.output().send(MessageBuilder.withPayload(produce a message http://blog.didispace.com).build());}public interface SinkSender {String OUTPUT input;Output(SinkSender.OUTPUT)MessageChannel output();}}在应用了上面的消息消费者程序之后运行这里定义的单元测试程序我们马上就能在消息消费者的控制台中收到下面的内容INFO 50947 --- [L2W-c2AcChb2Q-1] com.didispace.stream.SinkReceiver : Received: produce a message http://blog.didispace.com在上面的单元测试中我们通过Output(SinkSender.OUTPUT)定义了一个输出通过而该输出通道的名称为input与前文中的Sink中定义的消费通道同名所以这里的单元测试与前文的消费者程序组成了一对生产者与消费者。到这里本文的内容就次结束如果您能够独立的完成上面的例子那么对于Spring Cloud Stream的基础使用算是入门了。但是Spring Cloud Stream的使用远不止于此在近期的博文中我讲继续更新这部分内容帮助他们来理解和用好Spring Cloud Stream来构建消息驱动的微服务 本文完整实例 GithubGitee如果您对这些感兴趣欢迎star、follow、收藏、转发给予支持 本文内容部分节选自我的《Spring Cloud微服务实战》但对依赖的Spring Boot和Spring Cloud版本做了升级。 本文首发于我的博客http://blog.didispace.com 系列教程推荐 Spring Boot基础教程Spring Cloud基础教程 转载于:https://my.oschina.net/didispace/blog/1592356
http://wiki.neutronadmin.com/news/397911/

相关文章:

  • 书店网站建设需求分析调研表小米路由器3做网站
  • 如何修改网站内容一分钟赚一元的游戏
  • 商城网站主机品质好怎么形容词语
  • 手机app网站开发wordpress获取用户等级
  • 医疗网站建设目录榆林网站建设熊掌号
  • html做的小网站免费注册域名哪里有
  • 重庆电子商务网站seo做网站上面的图标
  • 低多边形生成网站电子商务平台(网站)建设方式
  • 个人网站赏析重庆假山制作
  • 已有域名 搭建网站wordpress怎么改登陆不了
  • 湛江做网站制作什么是理财北京网站建设公司
  • 专做正品 网站网站版面做得好的
  • 无需注册免费的网站wordpress导航怎么改
  • 装门做特卖的网站做推文的网站知乎
  • 福州电商网站设计长春网站优化seo
  • 网站建设中upl连接商丘软件开发
  • 婚纱网站策划书模板网页代码制作基础教程
  • python做网站性能五台县建设局网站
  • 西安做网站陕西必达百度搜索引擎入口登录
  • 烟台网站开发多少钱餐饮官网建站模板
  • 建设网站的特色首页排名seo
  • 用高权重网站的目录做站群怎么样wordpress编辑页面上方有白条
  • 导航网站系统网站开发 学习
  • 深圳专业做网站插画素材网站有哪些
  • html5 微网站模版山东思达建筑公司排名
  • 高端品牌建站微信app下载安装旧版本
  • 做住宿的网站戴尔网站建设的特点
  • 对网站建设课程的心得体会o2o网站开发相关技术
  • 用python做音乐网站金融网站素材
  • 怎么做网站自动采集数据库wordpress404无法加载