一大波更新来了。

4.80.00 March 30 2015

Important notes (changes that may break existing code)
        ======================================================
        * Changed messaging transport event OnServerRequestException to OnServerException.
        * Removed NeverTimeout property from TkbmMWActor. Replaced by MaxIdleTime.
        * Removed threaded distributed delivery from hub as it was defunct and needs to be created from new
           using the new processor classes.

New stuff
        =========
        - Added support for XE8.
        - Changed server messaging transport to use a queue and a processor for server
           request/service calls instead of the old custom way.
        - Added public property ServerQueue on server messaging transport to
           optionally allow for providing a custom queue (eg. memory or file based) instead of
           the default used TkbmMWMemoryMessageQueue for server request/service call messages.
        - Added public properties ServerQueueProcessor, InboundQueueProcessor, OutboundQueueProcessor
           on server messaging transport to optionally allow for other custom processors instead of the
           default defined by the transport (typical TkbmMWSAFServerInboundQueueProcessor,
           TkbmMWSAFHubOutboundQueueProcessor, TkbmMWCustomServerMessageQueueProcessor).
           Various options are available via the properties at runtime to setup forexample PoolSize and
           PoolQueueSize which defines number of threads and allowed outstanding number of requests on a thread).
           This replaces old server transport PoolSize property. Default is PoolSize=1 and PoolQueueSize=5.
        - Added mwsloPreferWideMemoOverMemo and mwsloPreferWideStringOverString options to kbmMWSQLite.
           Makes it optional to auto map string/memo field types to widestring/widememo field types.
           As string/memo is already unicode aware, its less reason for remapping to the wide versions
           automatically.
        - Added new Distribution property to SubjectHeader of messages. It will allow for indicating grouping
           and thus sequence of messages when being processed server side by group aware processors.
           In the future it will also allow for designating a named queue for a message or an exchange.
           Syntax:
              name            - Push message on named queue
              Q:name          - Push message on named queue
              E:name          - Push message via given exhange

G:name            - Push message on default queue under group name and process message sequential via group.
              G:name/H(OLD)     - Push message on default queue under group name and hold message in that group.
              G:name/C(OMMIT)   - Push message on default queue under group name and commit all held messages in that group sequentially.
              G:name/R(OLLBACK) - Push message on default queue under group name and rollback (delete) this and all held messages in that group.

Q:name:group            - Push message on named queue under given group name and process message sequential via group.
              Q:name:group/H(OLD)     - Push message on named queue under given group name. Hold message.
              Q:name:group/C(OMMIT)   - Push message on named queue under given group name. Commit all held messages in that group in that queue sequentially.
              Q:name:group/R(OLLBACK) - Push message on named queue under given group name. Rollback (delete) this and all held messages in that group in that queue.

E:name:group            - Push message via given exchange under given group name and process message sequential via group.
              E:name:group/H(OLD)     - Push message via given exchange under given group name. Hold message in receiving queues.
              E:name:group/C(OMMIT)   - Push message via given exchange under given group name. Commit all held messages in that group in receiving queues sequentially.
              E:name:group/R(OLLBACK) - Push message via given exchange under given group name. Rollback (delete) this and all held messages in receiving queues.

name and group are case insensitive.
           Holding messages means that they are pushed on a queue, but not made available for processors until commit.
        - Removed QUE. message type as named queues will be handled by the distribution subject header, in the future.
        - Added kbmMWGetUserLoginName, kbmMWGetUserFullName, kbmMWGetDomainServerName, kbmMWGetDomainUserFullName in kbmMWGlobal.pas
           (the later two only for Windows)
        - Added property MaxIdleTime on TkbmMWActor. Can be -1 to use default, 0 for never to time out, or another value to indicate timeout for that
           actor when logged in.
        - Added Distribution string property to TkbmMWCustomClient when WIB is licensed.
        - Reintroduced new fast TkbmMWEvent lockfree event. Thus 3 different event mechanisms can be used
           in kbmMW depending on settings in kbmMWConfig.inc.
           Define {$DEFINE KBMMW_SUPPORT_FASTEVENT} for using C4Ds fast lockfree event mechanism.
           Define {$DEFINE KBMMW_SUPPORT_LIGHTWEIGHTEVENT} for using Embarcadero's lightweight event mechanism.
           Define none of the above to fall back and use Embarcaderos TEvent.
           Notice it has been seen that Embarcaderos TLightWeightEvent is not stable in a production environment
             and may end up vast amounts of CPU cycles due to it entering some sort of deadlock situation.
           C4Ds own TkbmMWEvent is very fast and seems to be stable, but it shouldnt be enabled on a production environment before
             having tested the system under load for a period of time. Internal tests indicates it to be stable, however better be safe than sorry.
           TEvent is the old mutex based event mechanism which is very slow and results in large amounts of context switches when
             used often. Its stable but performs quite bad.
        - Added TkbmMWDuration record which holds a duration value to kbmMWDateTime.pas.
           It can be used by it self or in combination with TkbmMWDateTime which now fully supports
           duration values, including calculations.
        - Added a number of message and queue processor components:
           TkbmMWSyncMessageProcessor, TkbmMWAsyncMessageProcessor, TkbmMWSyncMessageQueueProcessor,
           TkbmMWAsyncMessageQueueProcessor, TkbmMWMultithreadMessageQueueProcessor, TkbmMWGroupedMultithreadMessageQueueProcessor
        - Added mwmqoDisableBatching message queue option to actively disable batching of messages that is requested to be batched and can be batched.
        - Added support for tentatively pushing messages on a queue by additional optional boolean argument to PushMessage.
        - Added CommitMessagePush and RollbackMessagePush.
           A tentatively pushed message is on the queue, but not visible to processors popping messages off the queue,
           until the message push is committed.
        - Added public property SubjectHeaderVersion on client and server messaging transports.
           If set to <>0, will force the outbound messages to be streamed with the given subject header version
           regardless of what the message itself is set to or what has been defined as default.

Changes/minor additions
        =======================
        - Published LargeAsNative in TkbmMWBinaryStreamFormat.
        - Modified kbmMWDebugDumpMemory to output 32 bytes per line nicely formatted instead of only 8 bytes.
        - Changed messaging transport event OnServerRequestException to OnServerException.
        - Removed NeverTimeout property from TkbmMWActor. Replaced by MaxIdleTime.
        - Removed threaded distributed delivery from hub as it was defunct and needs to be created from new
           using the new processor classes.
        - Improved messaging transports to be able to auto adapt to older subject header versions.
        - Improved precision on kbmMWGetCurrentTimeNS for Windows. Now its precise to approx 15ms.
        - Ensured that REQ/SRV messages are not committed on the inbound queue until they have been
           processed by the TkbmMWServer instance even though they are pushed on intermediate queues.
        - Added Count and Instance properties to TkbmMWServiceInstances to enable easier access from C++.
           Notice you should lock before and unlock after if you will attempt to loop through all instances
           as the number may change at any time if not locked.

Fixes
        =====
        - Fixed thread leak in TkbmMWCustomThread.
        - Fixed memory leak in TkbmMWJSONStreamFormat.
        - Fixed case issue with 'hidden' attribute in TkbmMWJSONStreamFormat.
        - Fixed SQLiteServer demo which was referencing unneeded AMF3 streamformat.
        - Fixed C++ XE2-XE5 unable to link with TPerlRegEx.
        - Fixed transaction sharing issue in FireDAC adapter which caused instability.
        - Fixed thread leak issue related to transport heartbeat thread.
        - Added ValueFromUTF16String and ValueToUTF16String methods to TkbmMWJSONMarshal.
           Exiksting ValueFromString and ValueToString encodes/decodes in UTF8 format.

KBMMW 4.80.00 发布相关推荐

  1. KBMMW 4.81.00 发布

    这次更新的速度非常快. 4.81.00 May 9 2015Important notes (changes that may break existing code)================ ...

  2. kbmmw 5.06.00 beta 发布

    原生.高效.可扩展.跨平台通信库来了. we are happy to announce v5.06.00 BETA of our popular middleware for Delphi and  ...

  3. 同一台服务器同一个IP都是80端口发布多个网站

    [一台服务器上如何创建多个网站?] 原理分析 本质就是Nginx监听一台服务器的80端口,使用不同的域名映射到不同的Linux文件目录(站点发布的目录) 首先就是多个域名可以解析到同一个ip地址.我们 ...

  4. puppy linux4,发行版:Puppy Linux 4.00发布

    是的,Puppy Linux是另外一种Linux发行.它的不同之处在于,Puppy是格外的小,然而又充满了特性.Puppy能从64M的存储设备启动,并且,整套系统都能在内存中运行.有很多自启动运行光盘 ...

  5. 7-Zip 19.00 正式版发布,修正 Win10 1809(17763) 可能无法正常使用大内存页

    开发四年只会写业务代码,分布式高并发都不会还做程序员? >>>   7-Zip 19.00发布了. 适用于64位Windows x64的7-Zip: https://7-zip.or ...

  6. React之npm发布Antd样式的组件

    文章目录 一.npm发包需要了解的知识 (1)判断包名是否合法 (2)npm初始化 (3)devDependencies.dependencies和peerDependencies 二.测试发包 三. ...

  7. nginx安装与项目发布

    nginx-nginx的介绍和安装 *******安装nginx,使用root用户*********** ************** 必须远程使用root用户连接,否则会出现权限相关问题,报出 40 ...

  8. realme真我笔记本Air官宣发布时间 将于7月12日发布

    说到手机厂商做笔记本电脑,其中比较出门的就有小米和realme真我两个品牌了,而最近真我的新款笔记本电脑"realme真我笔记本Air",就官宣了发布时间,据了解将于7月12日发布 ...

  9. 00后会不会改变软件测试行业现状?

    不可置否,从年开始,00后开始进入职场,开始他们漫长的职业生涯啦. 作为经历过90后改变职场规则的80后的老人们,又要瑟瑟发抖啦. 因为在90后之后,00后又开始整顿职场了. 80后,上有老下有小,为 ...

最新文章

  1. 孙正义:互联网流量将转化为智能AI流量,我的时代终于来了
  2. Asp.net MVC验证那些事(4)-- 自定义验证特性
  3. Java_异常_05_ OutOfMemoryError: Java heap space
  4. pstack 安装linux_详解命令-pstack
  5. 机器学习 KD树生成(matlab实现)
  6. 记录:JS异步解决方案的发展以及优缺点
  7. webrtc笔记(1): 基于coturn项目的stun/turn服务器搭建
  8. opencv调节图片饱和度_OpenCV调整彩色图像的饱和度和亮度
  9. 从像素坐标到相机坐标_多视图几何基础——深入理解相机内外参数
  10. java.util.vector中的vector的详细用法
  11. Java script生成apk_Android 命令行编译、打包生成apk文件
  12. 批量生成MySQL不重复手机号大表
  13. Flutter画中画自定义画中画
  14. 谷歌、亚马逊全面开火,一场前所未有的AI芯片大战
  15. Nginx配置 转发URL中包含特殊字符
  16. perl语言的学习(一)
  17. 计算机中丢失quartz dll,win10系统提示缺少quartz.dll文件的解决方法
  18. java jre、jdk、server jre
  19. 灵活的VueJS输入控件可进行评级
  20. 1.挖掘标记语言Markdown

热门文章

  1. django安装mysql驱动
  2. C语言 · 求矩阵各个元素的和
  3. 实现PHP基本安全的11条准则
  4. web developer tips (69):vs中在浏览器中查看的快捷键
  5. 人生哲理名言六十六条
  6. WinAPI: CreateDirectoryEx - 根据模版建立文件夹
  7. Tungsten Fabric SDN — 软件架构
  8. C 语言编程 — 基本数据类型
  9. Python 数据结构_队列
  10. 从源码带你看懂functools的partial方法