许多业务流程要求在将来某个日期安排事件.例如,在与客户进行初次销售联系后,我们可能希望在将来的某个时间安排跟进电话.EasyNetQ可以通过其Future Publish功能帮助您实现此功能.例如,这里我们使用FuturePublish扩展方法来安排未来一个月的后续销售电话.请注意,FuturePublish使用UTC时间. var followUpCallMessage = new FollowUpCallMessage( .. ); bus.FuturePublish(DateTime.Ut…
AMQP发布消息默认情况下是非事务性的,不能确保你的消息真正送达代理.AMQP可以去指定事务性发布,但是RabbitMQ这样会非常慢,我们没有让EasyNetQ API去支持此功能.为了高效的确保投递成功,RabbitMQ推荐使用'Publish Confirms'.简单来讲,这是AMQP的一个扩展,当你的消息被代理成功接收以后,提供了一个回调支持. 成功接收意味着什么呢? 一个瞬态消息被确认那一刻,消息已进入队列. 一个持久化消息被确认时,消息会持久化到磁盘,或者每一个队列上的消息已被消费掉.…
很多商业流程需要事件在未来的时间按照预定时间发布.例如,在初次与客户接触后,可以在未来某个时间去电话回访客户.EasyNetQ可以用它的Future Publish功能帮你实现这个功能.举例:这里我们使用FuturePublish扩展方法去预定未来一个月后打销售回访电话.注意:FuturePublish使用UTC时间. var followUpCallMessage = new FollowUpCallMessage(..); bus.FuturePublish(DateTime.UtcNow.…
kbmmw 里面提供了强大的事件调度功能,今天简单演示一个使用调度事件在窗体上显示时间. 建立一个新工程. 放上几个控件 在窗体里面引用单元 kbmMWScheduler, 然后添加过程 unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, kbmMWScheduler, Vcl.Controls, Vc…
  截图来自MySQL5.6的pdf版文档. 说明: 1)基于语句的复制时,trigger会在slave上执行,所以slave上也需要有trigger的定义,不然会导致主从数据不一致的: 2)基于行的复制时,trigger不会在slave上执行.因为复制的数据,不是sql语句.       截图来自MySQL5.6的pdf版文档. 说明: 基于行的复制时,存储过程,函数,触发器都只在master上执行,然后将执行之后的数据传给 slave .不会将它们的sql语句发给slave. slave上看…
从去年开始,kbmmw 慢慢增加内涵,除了完善各种服务外,陆续增加和扩展了作为一个中间件必须有的功能, 例如,权限管理.日志系统.调度系统.内存调试等功能. 今天给大家介绍一下kbmmw 的调度事件,调度事件的主要目标就是”在指定时间干,必须干“,不是“爱干”不干,是“必须干” :). 在传统的delphi 中事件调度室通过两种方式,一种方式通过Ttimer 来实现,(我20年做的母校的食堂餐饮消费系统就是通过Ttimer来轮询 POS 机的).另外一种就是通过扩展Tthread 线程类,通过后…
事件调度 sched模块内容很简单,只定义了一个类.它用来最为一个通用的事件调度模块. class sched.scheduler(timefunc, delayfunc)这个类定义了调度事件的通用接口,它需要外部传入两个参数,timefunc是一个没有参数的返回时间类型数字的函数(常用使用的如time模块里面的time),delayfunc应该是一个需要一个参数来调用.与timefunc的输出兼容.并且作用为延迟多个时间单位的函数(常用的如time模块的sleep). 下面是一个列子: imp…
许多业务流程都要求将事件安排在未来的某个日期. 例如,在与客户进行初次销售联系之后,我们可能希望在将来某个时间安排后续电话. EasyNetQ可以通过其未来发布功能帮助您实现此功能. 例如,我们在这里使用FuturePublish扩展方法来安排未来一个月的后续销售电话. 请注意,FuturePublish使用UTC时间. var followUpCallMessage = new FollowUpCallMessage( .. ); bus.FuturePublish(DateTime.UtcN…
RabbitMQ延迟消息插件仍然在实验阶段.你使用这个功能要自担风险. RabbitMQ延迟消息插件为RabbitMQ增加了新的交换机类型,允许延时消息投递. EasyNetQ为交换机通过定义一种新的日程类型:DelayedExchangeScheduler来支持这种能力. 这样允许你使用之前同样的Future Publish接口,但是取消Future Message会抛出异常.因为延迟消息插件不支持消息取消,不管你在调用FuturePublish是否指定了cancellationKey,或当你…
并发的意义 为了高效处理网络I/O,需要使用并发,因为网络有很高的延迟,所以为了不浪费CPU周期去等待,最好在收到网络响应之前做些其他的事. 在I/O密集型应用中,如果代码写得正确,那么不管是用哪种并发策略(使用线程或asyncio包),吞吐量都比依序执行的代码高很多. 并发是指一次处理多件事.并行是指一次做多件事.一个关于结构,一个关于执行. 并行才是我们通常认为的那个同时做多件事情,而并发则是在线程这个模型下产生的概念. 并发表示同时发生了多件事情,通过时间片切换,哪怕只有单一的核心,也可以…