RabbitMQ简易教程 - 发布订阅
前面一篇介绍的任务队列是每个消息只能被一个工作者取走。这一篇讲解发布/订阅消息模式, 在这个模式里面,一个消息可以被发送给多个消费者。
这里我通过一个简单的日志系统来说明,消息生产者会将日志发送给队列,然后多个订阅者可以接收到这条日志显示到不同的地方, 比如可以打印到文件中,同时打印到控制台上面。
前面一篇介绍的任务队列是每个消息只能被一个工作者取走。这一篇讲解发布/订阅消息模式, 在这个模式里面,一个消息可以被发送给多个消费者。
这里我通过一个简单的日志系统来说明,消息生产者会将日志发送给队列,然后多个订阅者可以接收到这条日志显示到不同的地方, 比如可以打印到文件中,同时打印到控制台上面。
这里演示的官网通过python使用消息队列的教程:https://www.rabbitmq.com/getstarted.html
先演示最简单的一个入门级别的hello world
例子,
发送者发送一个字符串,接受者接收到消息后打印出来。然后再介绍怎样实现任务队列
最近又开始捣鼓RabbitMQ了,一个超好用的队列中间件,官网教程更新,自己也将有用的东东记录下来。
测试环境:消息服务器CentOS7.4、客户端Python3.6.1
RabbitMQ是一个出色的消息代理中间件(Message Broker):接受和转发消息。你可以将它看作是一个邮局, 你把自己的信件写上收件人地址,然后放到邮筒里面就不用管了,由邮局负责将这个信件送到目的地。
WebSocket是HTML5开始提供的一种浏览器与服务器间进行全双工通讯的网络技术。 依靠这种技术可以实现客户端和服务器端的长连接,双向实时通信。
它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息, 是真正的双向平等对话,属于服务器推送技术的一种。
其他特点包括:
协议标识符是ws(如果加密,则为wss),服务器网址就是 URL
1 | ws://xncoding.com:80/some/path |
另外客户端不只是浏览器,只要实现了ws或者wss协议的客户端socket都可以和服务器进行通信。
我们经常会遇见许多要运行很长时间的任务,如果还是按照常规的页面请求方式,就会产生卡顿,页面假死现象。 这时候我们第一个想到的就是将这种同步请求方式转换成异步请求,然而对于不需要关心返回结果的请求这个非常简单, 大部分情况是我们还得知道异步任务返回结果,然后调用回调函数来更新页面结果。
目前常见的三种方式是Ajax轮训、Ajax长连接(long polling)、WebSocket方式。 这里我只讲Ajax的两种方式,因为更好的WebSocket方式我已经单独写了一篇文章来介绍。
Jenkins放在Windows7服务器上面,通过war包启动,任务中执行python脚本时候控制台日志出现乱码。。
OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表), 而无需将用户名和密码提供给第三方应用。
OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。 每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频)。 这样,OAuth让用户可以授权第三方网站访问他们存储在另外服务提供者的某些特定信息,而非所有内容。
目前最新版本是OAuth 2.0,这里我通过用户使用 github 登录在我的博客网站上留言为例,简述 OAuth 2.0 的运作流程。
这一篇记录一下Jenkins的一些有趣的东西,或者说更加接近于实战的东西,也许我写的这几篇内容只覆盖了20%左右的内容, 但是应该能解决实际工作中80%左右的问题。这就是常说的2/8准则,时间有限,我也只会去记录这些常用的东西。
这一篇我通过两个实际的真实例子来演示Jenkins常见使用案例。
第一个例子演示一个标准的SpringMVC
这个Java Web工程怎样自动抓取最新源码、测试、打包和部署,
第二个例子演示目前我做的Winstore
这个Python项目怎样实现自定义构建指令、在线升级、自动打包和自动部署。
前面一篇介绍了Jenkins的入门安装和简单演示,这篇讲解最核心的Pipeline部分。
Jenkins Pipeline 就是一系列的插件集合,可通过组合它们来实现持续集成和交付的功能。
通过Pipeline DSL
为我们提供了一个可扩展的工具集,将简单到复杂的逻辑通过代码实现。
通常,我们可以通过编写Jenkinsfile
将管道代码化,并且纳入到版本管理系统中。