Qpid Proton 0.8 发布,此版本包括大量的 bug 修复,现已提供下载。更新内容请看发行说明: Bug 修复 [PROTON-436] - pn_data_dump is broken for complex types [PROTON-474] - Incorrect mapping of TTL to JMSExpiration in JMS InboundTransformer [PROTON-516] - [proton-c] Dispatcher frame buffer set to peer's max frame size. [PROTON-543] - Frame Parser error if input stream is read before SASL is initialized in the transport [PROTON-576] - proton-j: codec support for UTF-8 encoding and decoding appears broken? [PROTON-582] - Perl language bindings do not properly identify integers from strings when encoding [PROTON-587] - Proton 0.7 fails to compile with Visual Studio 2008 [PROTON-590] - If Proton receives a frame with an unexpected performative number it will SEGV [PROTON-592] - Python test function common _ready() fails on windows [PROTON-593] - Scripts for running java examples contain old paths [PROTON-595] - Python test function MessengerApp.start fails on Windows [PROTON-596] - There is no equivalent to 'config.sh' for windows [PROTON-602] - Syntax error in perl bindings Data.pm for perl 10.5.1 [PROTON-603] - Python testReclaimCredit fails on Windows [PROTON-604] - Unable to display usage information for perl example send.pl [PROTON-606] - Python testReclaimCredit exposes test server messenger hang on windows [PROTON-607] - Perl recv.pl shows error if a message has no subject [PROTON-608] - seg fault if attach is sent before open and begin [PROTON-610] - proton-c: messenger doesn't honour an advertised remote idle timeout [PROTON-611] - [proton-c] transport buffer increased to peer's max frame size if initial output_size is not enough [PROTON-615] - Cmake binding dependencies wrong (building python binding always; no dependency for include/proton/cproton.i) [PROTON-616] - Use Symbol keys in message annotations [PROTON-617] - Proton map/hash entries can disappear [PROTON-618] - [proton-j] some of the .java source files have crlf line endings, most dont [PROTON-619] - The heuristics in config.sh don't work for all build directory locations [PROTON-624] - Corrupted payload with redelivered messages when transformer is jms [PROTON-625] - prevert looping when map->load_factor exactly equals load [PROTON-627] - Use Symbol keys in delivery annotations [PROTON-631] - Potential null pointer exception if 'x-opt-jms-type' annotation is present but has a null value. [PROTON-641] - pn_connection_t leaked when links not closed [PROTON-646] - Perl message does not have the correct type when the body is a boolean with a FALSE value [PROTON-648] - Memory leaks on aborted connections. [PROTON-655] - URL parser fails to parse ActiveMQ dynamically generated address [PROTON-656] - pn_transport_close_{head, tail} no longer return an error code on framing error. [PROTON-660] - Fix openssl.c build on windows [PROTON-661] - pn_message_save_* do not return correct message size when PN_OVERFLOW [PROTON-666] - TransactionalState applied to indicate the txn-id before sending has no effect on the outgoing transfer frames [PROTON-669] - proton-c: Messenger abstracts away connections, but it would be useful to fail fast for auth errors etc. [PROTON-670] - proton-c: Messenger doesn't provide accessors for the links it is using [PROTON-671] - proton-c: Messenger doesn't provide a way to set the link settlement modes it uses [PROTON-672] - proton-c: Messenger doesn't support setting the transport tracer [PROTON-673] - proton-c: Messenger doesn't provide a way to obtain the remote idle timeout [PROTON-674] - proton-c: Messenger doesn't provide a way of setting the TTL on a subscription [PROTON-675] - proton-c: Messenger doesn't provide a way of setting the SSL peer authentication mode [PROTON-676] - proton-c: transport layer SSL failures not propagated back to Messenger in pni_connection_readable [PROTON-677] - proton-c: transport incorrectly detaches all links with closed=true by default [PROTON-679] - proton-c: add a "manual" link credit mode to Messenger [PROTON-680] - proton-c: Messenger doesn't provide a way of obtaining link or delivery information [PROTON-684] - Restrict IOCP enlistment to pn_selector_t usage scenarios in Windows [PROTON-685] - calling free() on session with multiple Sender or Receiver links leads to ConcurrentModificationException [PROTON-686] - va_copy is C99 (not C89) and is not supported by the Microsoft Visual Studio C compiler before VS 2013 [PROTON-687] - Memory corruption in proton-test [PROTON-688] - pn_transport_unbind() doesn't reset all relevant trasnport state [PROTON-689] - Python binding does not expose transport error details [PROTON-690] - Fix Windows components for new Proton object/class refcounting mechanisms [PROTON-694] - splitting contrib/JMSMappingOutboundTransformer's encoding and transformation [PROTON-695] - New URL code causing invalid reads/writes according to valgrind [PROTON-698] - ClassCastException occurs when testing equality of Binary instance against a different type of Object [PROTON-699] - Messenger installed examples send,recv do not compile [PROTON-701] - Windows ctest fixes for proton-c [PROTON-702] - Windows proton-c selector can forget timer events [PROTON-704] - delivery-count is set incorrectly during outbound transformation [PROTON-706] - CMake fails - get_filename_component unknown component DIRECTORY [PROTON-708] - C proton driver needs a getter function to access the pn_error so it can be cleared [PROTON-709] - [proton-c] Windows 64-bit transport issue [PROTON-712] - Seg fault due to missing NULL return value check of getprotobyname [PROTON-714] - SSL buffer overflow with large frames [PROTON-715] - [contrib/proton-jms] delivery-count is set incorrectly during Native outbound transformation [PROTON-716] - Reject SSL clients that attempt to use SSLv3 [PROTON-717] - Disable SSL compression [PROTON-718] - disable SSL v3 for proton-j [PROTON-719] - Disable SSL v3 for Windows SChannel [PROTON-720] - [Windows IO] Prints warning string as %d [PROTON-724] - pn_transport_close_head doesn't generate the expected PN_TRANSPORT_HEAD_CLOSED event [PROTON-725] - pni_parse_url does not properly handle Base64 in URL [PROTON-728] - transport aborts when delivery ids are out of sequence 改进 [PROTON-429] - pn_bytes(size_t size, char *start) needs a const on the 'start' argument [PROTON-465] - FindPerlLibs.cmake module in Proton behaves differently to Qpid's Perl detection [PROTON-558] - Make friendly protocol field logging optional for low-memory devices [PROTON-583] - Can move a bunch of things from .data to .rodata by adding const [PROTON-585] - Can improve memory use by rearranging structs to eliminate padding [PROTON-591] - There are two large, mostly empty tables used for dispatching incoming frames [PROTON-597] - Improve the memory footprint of TrasportImpl [PROTON-613] - update java messenger 'send' example behaviour to be more in line with the other language examples [PROTON-620] - Remove unnecessary wrapped types from proton low level bindings [PROTON-628] - split out usage of the buffer in MessageImpl#decode() to its own method [PROTON-640] - IO completion port Windows IO for Proton [PROTON-642] - SASL Servers need to be able to optionally handle clients that don't use SASL [PROTON-647] - Implement an Event.copy or clone method [PROTON-650] - proton-dump should include a man page [PROTON-653] - Expose the version and build details for Proton in the Perl bindings. [PROTON-657] - OSX: build proton with homebrew openssl [PROTON-664] - add pom profile to allow creating souces jar during non-release builds. [PROTON-668] - Document Proton-c IO restrictions for 0.8 release [PROTON-693] - Python Url class to wrap C function pni_parse_url [PROTON-705] - Windows: Allow C based tests to run directly from ctest/Visual Studio without having to set up environment [PROTON-711] - [contrib/proton-jms] add support to message transformers for more efficient destination type annotation value 新特性 [PROTON-581] - SSL/TLS support for Proton-c on Windows [PROTON-630] - [python] Add a setup.py for installing the python bindings via PyPi [PROTON-651] - Export the proton version numbers via the bindings. Apache Qpid (Open Source AMQP Messaging) 是一个跨平台的企业通讯解决方案,实现了高级消息队列协议。提供了 Java、C++ 两种服务端版本以及 Java、C++、.NET、Python和Ruby语言的客户端。 其中C++版本的服务器端具备高性能/低消耗以及RDMA支持,可运行于Windows/Linux和Solaris平台;而Java版本的服务器则支持JMS,以及各种平台。 关于RDMA的相关知识: RDMA(Remote Direct Memory Access)是通过网络把资料直接传入某台计算机的一块存储区域,不需用到多少计算机的处理功能。普通网卡集成了支持硬件校验和的功能,并对软件进行了 改进,从而减少了发送数据的拷贝量,但无法减少接收数据的拷贝量,而这部分拷贝量要占用处理器的大量计算周期。普通网卡的工作过程如下:先把收到的数据包 缓存到系统上,数据包经过处理后,相应数据被分配到一个TCP连接。下一步,接收系统再把主动提供的TCP数据同相应的应用程序联系起来,并将数据从系统 缓冲区拷贝到目标存储地址。以太网已能满足高性能应用对网络吞吐率的要求,具备高吞吐率和成本优势,以太网技术要跟高性能网络应用挂钩,主要解决的问题是 应用吞吐率。通常情况下,系统持续在主机CPU中处理以太网通信需要占用CPU资源。CPU速率会制约网络数据率;持续处理这类通信会导致CPU性能降 级;对多端口千兆位或单端口10千兆位以太网,这类问题会变得更为严重 Qpid Proton 0.8 发布下载地址