一大波更新来了。

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 5.05.00 发布

    新年前最后几天,kbmmw 发布了新版本,增加一大波功能.we are happy to announce v5.05.50 of our popular middleware for Delphi ...

  2. KbmMW 4.30.00 发布

    今天早上,KbmMW发布了4.30.00 版,这个版本开始支持XE4 的WIN/WIN64/OSX. 暂时不支持ios开发,同时加强了通过JSON 的对象序列化.还有就是解决了我提交的几个有关 汉字处 ...

  3. KBMMW 4.92.00 发布

    We are happy to announce the release of kbmMW Professional and Enterprise Edition. Yet again kbmMW c ...

  4. KBMMW 4.90.00 发布

    kbmMW is a portable, highly scalable, high end application server andenterprise architecture integra ...

  5. KBMMW 4.84.00 发布

    kbmMW is a portable, highly scalable, high end application server and enterprise architecture integr ...

  6. KBMMW 4.83.00 发布

    新版本又来了,端午节都不让大家过好:) 这次终于支持ios 64了,不用我再手工改了. Components4Developers is a company established in 1999 w ...

  7. KBMMW 4.82.00 发布

    作者最近加紧了更新进度,赞一个. 时间都去哪儿了? 还没好好看4.81, 新版就来了. 这个版本主要是增强日志管理,已经强大到替换delphi 本身的异常处理了. We are happy to an ...

  8. KBMMW 4.70.00 发布

    We are happy to announce the release of kbmMW v. 4.70.00 Professional and Enterprise Edition. kbmMW ...

  9. kbmmw 5.10.00 发布

    We are happy to announce v5.10.00 of the most complete development add on for Delphi and C++Builder ...

随机推荐

  1. as3 优化

    1 代码写法 1 定义局部变量 定义局部变量的时候,一定要用关键字var来定义,因为在Flash播放器中,局部变量的运行速度更快,而且在他们的作用域外是不耗占系统资源的.当一个函数调用结束的时候,相应 ...

  2. UI5-文档-4.37-Content Density

    在本演练教程的这一步中,我们将根据用户的设备调整内容密度.SAPUI5包含不同的内容密度,允许您为支持触摸的设备显示更大的控件,为鼠标操作的设备显示更小.更紧凑的设计.在我们的app中,我们将检测设备 ...

  3. tensorflow笔记之反向传播时用到的几种方法

    1. 梯度下降, tf.train.GradientDescentOptimizer(0.05),梯度下降的问题在与不一定能获得全局最优解,并且因为要在所有数据上最小化损失,所以损失函数是在所有训练数 ...

  4. tar 压缩文件指定目录

    tar -cjf /app/tmp/app/test.tar.bz2 -C /app/tmp  res_test.csv 将/app/tmp 目录下 res_test.csv文件压缩到/app/tmp ...

  5. salt之grains组件

    grains是saltstack最重要的组件之一,作用是收集被控主机的基本信息,这些信息通常都是一些静态类的数据,包括CPU.内核.操作系统.虚拟化等,在服务器端可以根据这些信息进行灵活定制,管理员可 ...

  6. SSM总结

    1    报错: cvc-complex-type.2.4.a: Invalid content was found starting with element 'async-supported'.  ...

  7. Java Magic. Part 1: java.net.URL

    Java Magic. Part 1: java.net.URL @(Base)[JDK, url, magic, 黑魔法] 英文原文 转载请写明:原文地址 系列文章: -Java Magic. Pa ...

  8. Java properties文件用法

    package com.suyang.properties; import java.io.FileInputStream; import java.io.FileNotFoundException; ...

  9. express + mongodb 搭建一个简易网站 (五)

    前面已经将导航中的“所有宝贝”页面连上了mongodb,现在我们就把其他的页面脸上数据库,将整个网站全部实现. 打开routes文件,找到jacket.js,将里面的代码修改如下: var expre ...

  10. Centos7 創建快捷方式

    usr/share/applications 創建文件 Gogland.desktop [Desktop Entry]Version=1Type=ApplicationName=GoglandGene ...