Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Message-oriented middleware
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Standards== Historically, there was a lack of [[standardization|standards]] governing the use of message-oriented middleware that has caused problems. Most of the major vendors have their own implementations, each with its own [[application programming interface]] (API) and management tools. One of the long-standing standards for message oriented middleware is X/Open group's XATMI specification (Distributed Transaction Processing: The XATMI Specification) which standardizes API for [[interprocess communication]]s. Known implementations for this API is ATR Baltic's [[Enduro/X]] middleware and [[Oracle Corporation|Oracle]]'s [[Tuxedo (software)|Tuxedo]]. The [[Advanced Message Queuing Protocol]] (AMQP) is an approved [[OASIS (organization)|OASIS]]<ref>[http://www.amqp.org/node/102 1.0 Becomes OASIS Standard]. AMQP (2012-10-31). Retrieved on 2014-05-23.</ref> and ISO<ref>{{Cite web|url=http://www.iso.org/cms/render/live/en/sites/isoorg/contents/data/standard/06/49/64955.html|title=ISO/IEC 19464:2014|website=ISO}}</ref> standard that defines the protocol and formats used between participating application components, so implementations are interoperable. AMQP may be used with flexible routing schemes, including common [[Messaging pattern|messaging paradigms]] like [[Point-to-point (telecommunications)|point-to-point]], [[Fan-out (software)|fan-out]], [[publish/subscribe]], and [[request-response]] (these are intentionally omitted from v1.0 of the protocol standard itself, but rely on the particular implementation and/or underlying network protocol for routing). It also supports transaction management, queuing, distribution, security, management, clustering, federation and heterogeneous multi-platform support. Java applications that use AMQP are typically written in [[Java (programming language)|Java]] JMS. Other implementations provide APIs for [[C Sharp (programming language)|C#]], [[C++]], [[PHP]], [[Python (programming language)|Python]], [[Ruby (programming language)|Ruby]], and other [[programming language]]s. The [[High Level Architecture]] (HLA IEEE 1516) is an [[Institute of Electrical and Electronics Engineers]] (IEEE) and [[Simulation Interoperability Standards Organization]] (SISO) standard for simulation interoperability. It defines a set of services, provided through an API in C++ or Java. The services offer publish/subscribe based information exchange, based on a modular Federation Object Model. There are also services for coordinated data exchange and time advance, based on logical simulation time, as well as synchronization points. Additional services provide transfer of ownership, data distribution optimizations and monitoring and management of participating Federates (systems). The [[MQ Telemetry Transport]] (MQTT) is an ISO standard (ISO/IEC PRF 20922) supported by the OASIS organization. It provides a lightweight publish/subscribe reliable messaging transport protocol on top of TCP/IP suitable for communication in M2M/IoT contexts where a small code footprint is required and/or network bandwidth is at a premium. The [[Object Management Group]]'s [[Data Distribution Service]] (DDS) provides message-oriented [[Publish–subscribe pattern|Publish/Subscribe]] (P/S) middleware standard that aims to enable scalable, real-time, dependable, high performance and interoperable data exchanges between publishers and subscribers.<ref>Data Distribution Service for Real-time Systems (DDS), Object Management Group, version 1.2, January 2007</ref> The standard provides interfaces to C++, C++11, C, [[Ada (programming language)|Ada]], Java, and Ruby. === XMPP === The eXtensible Messaging and Presence Protocol ([[XMPP]]) is a communications protocol for message-oriented middleware based on Extensible Markup Language ([[XML]]). Designed to be extensible, the protocol has also been used for publish-subscribe systems, signalling for VoIP, video, file transfer, gaming, Internet of Things applications such as the smart grid, and social networking services. Unlike most instant messaging protocols, XMPP is defined in an open standard and uses an open systems approach of development and application, by which anyone may implement an XMPP service and interoperate with other organizations' implementations. Because XMPP is an open protocol, implementations can be developed using any software license; although many server, client, and library implementations are distributed as free and [[open-source software]], many freeware and proprietary software implementations also exist. The Internet Engineering Task Force (IETF) formed an XMPP working group in 2002 to formalize the core protocols as an IETF instant messaging and presence technology. The XMPP Working group produced four specifications (RFC 3920, RFC 3921, RFC 3922, RFC 3923), which were approved as Proposed Standards in 2004. In 2011, RFC 3920 and RFC 3921 were superseded by RFC 6120 and RFC 6121 respectively, with RFC 6122 specifying the XMPP address format. In addition to these core protocols standardized at the IETF, the XMPP Standards Foundation (formerly Jabber Software Foundation) is active in developing open XMPP extensions. XMPP-based software is deployed widely across the Internet, according to the XMPP Standards Foundation, and forms the basis for the Department of Defense (DoD) Unified Capabilities Framework.<ref>[http://www.disa.mil/Services/Network-Services/UCCO/~/media/Files/DISA/Services/UCCO/UCR2013/01_Framework_2013.pdf] {{webarchive|url=https://web.archive.org/web/20130523040719/http://www.disa.mil/Services/Network-Services/UCCO/~/media/Files/DISA/Services/UCCO/UCR2013/01_Framework_2013.pdf|date=May 23, 2013}}</ref> The [[Java EE]] programming environment provides a standard API called [[Java Message Service]] (JMS), which is implemented by most MOM vendors and aims to hide the particular MOM API implementations; however, JMS does not define the format of the messages that are exchanged, so JMS systems are not interoperable. A similar effort is with the actively evolving [[OpenMAMA]] project, which aims to provide a common API, especially to C clients. As of August 2012, it is mainly appropriate for distributing market-oriented data (e.g. stock quotes) over pub-sub middleware.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)