Question 1: What is FioranoMQ?
FioranoMQ incorporates a 100% pure Java implementation of JMS (the Java Message Service API (version 1.1) released by Sun Microsystems, Inc.), which isolates developers from the details of low-level network programming and provides a standards-based method to access distributed-system services.
FioranoMQ is an event-driven communication platform that dramatically reduces the development time for network applications, providing for location independent application development through its Publish/Subscribe and PTP (Point to Point) communication APIs. It also includes support for critical network services such as transactions and guaranteed message delivery, considerably easing the process of developing and deploying Internet, Intranet and Extranet applications. JMS APIs and services allow developers to add value to an application by focusing more on its core business logic, rather than its low-level infrastructure. FioranoMQ implements all of the JMS Pub/Sub and PTP APIs and includes support for HA, Durable connection, XA support, HT, LMS, Clustering through Dispatcher-Bridge& Repeater, Application server integration, DMQ, Message compression and Encryption, security, remote administration, guaranteed message delivery, scalability and language interoperability.
The security implementation includes integrated SSL support (with digital certificates) for encrypted data transfers together with ACL-based security, built on Java 2 standards, allowing an external administrator to control access to system resources. Comprehensive Administration API allows remote monitoring of servers through JMS; while an integrated and completely native C runtime library, C#runtime library and C++ runtime library (in addition to the standard Java library) allows C, C# runtime library and C++ Java programs to seamlessly communicate with each other. Automatic store-and-forward across multiple servers ensures scalability, performance and guaranteed message delivery across faulty networks. The FioranoMQ platform brings all of the benefits of standards-based JMS API's to developers without forgoing performance or scalability.
Question 2: What are the system and software requirements for FioranoMQ?
The following table lists the minimum requirements for FioranoMQ:
FioranoMQ server and clients can run on any platform that supports os, JRE 1.2 or above. Special/Limited editions of FioranoMQ clients can run on JRE 1.1 as well.
Pentium class PC with a minimum of 256 MB of RAM
For Windows installer, 250 MB of free disk space is required. For Linux and Unix flavor installer, 210 MB of free disk space is required.
The Windows version of the FioranoMQ installation comes bundled with Sun's 1.4 JRE. The Unix version of the installer does not come bundled with a JRE. Users of FioranoMQ on Solaris are recommended to use JavaSoft's JRE 1.4 (hotspot enabled).
Question 3: What does FioranoMQ provide other than providing complete JMS implementation?
FioranoMQ provides for a 100% Java implementation of the JMS specification. It also provides features like, HA (High Availability) , Durable connection, XA support, Hierarchy Topic, Large Message Support, Clustering through Dispatcher, Bridge, Repeater, Application server integration, DMQ, Messagecompression and Encryption.
For more details, refer to FioranoMQ Concept Guide.
FioranoMQ Product Line
Question 4: What are the types of licenses available for FioranoMQ?
FioranoMQ has separate releases for Windows and Unix (and related OS). FioranoMQ Server is available in 3 versions. Please refer to the license agreement for more information.
The Demo version of FioranoMQ supports a large number of concurrent clients, unlimited number of topics and queues; and is not node locked. This version of FioranoMQ is valid only for a 45-day limited license. It can be used only for evaluation purposes.
The Developer-subscription version of FioranoMQ is node locked and is valid for 365 days at a time. The only restriction it holds is that it cannot be used for deployment. This version is only meant for development purposes.
The Deployment version of FioranoMQ is the full deployment version of FioranoMQ. This version is typically a perpetual license; node locked to a single IP, and contains no restrictions on the number of clients, topics, or queues.
Demo Version and Developer Demo Versions of FioranoMQ can be downloaded from http://www.fiorano.com.
Other key products encompassing the FioranoMQ product family include:
FioranoMQ provides for:
- MQSeries: Bridges FioranoMQ Bridge can be configured between an instance of FioranoMQ and IBM MQSeries. Bridges to IBM MQSeries support all JMS Message types.
- MSMQ Bridge: The FioranoMQ Bridge for MSMQ uses Microsoft's COM architecture for communicating with the MSMQ Server. The bridge communication with the MSMQ server is done through java wrapper files, generated over a type library file provided by Microsoft for this purpose.
- Tibrv Bridges: The FioranoMQ Bridge for Tibrv uses Tibrv's JAVA APIs for communicating with the Tibrv daemon. The bridge communicates with the Tibrv daemon using the NATIVE (JNI) implementation provided by Tibrv.
Fiorano's Multicast implementation of JMS is a server less implementation. It provides for a distributed messaging system using a server less,zero-administration version of a JMS implementation. FioranoMQ Multicast incorporates a 100% pure Java multicast-backbone which works on all platforms.
Interoperability with other Middleware Platforms
Question 5: How does FioranoMQ integrate with other legacy Middleware messaging Servers such as MQSeries/MSMQ?
FioranoMQ provides Bridges to MSMQ and any other JMS Messaging provider.
Question 6: Does the XML Toolkit work for Stream and Object Messages?
Fiorano's XML Interoperability Toolkit allows for Interoperability across JMS Vendors. The Toolkit provides APIs to convert a JMS Message to an XML document and also to recreate a JMS Message from an XML document. The toolkit currently supports conversion for TextMessage and MapMessage. The toolkit is generic and supports XML Parser plug-ins at runtime. This toolkit can be used to communicate across enterprises that use different JMS Vendors for their messaging needs. The DTD (Document Type Definition) of the Messages is public and can be used by any non-Fiorano JMS vendor to communicate with FioranoMQ.
The XML toolkit defines DTD only for Text and Map Messages. Hence only Text and Map Messages have an XML converter.
Question 7: Does FioranoMQ support SSL (Secure Socket Layer) communications?
FioranoMQ allows for secure connections through Secure Socket Layer between the message clients and the message brokers. The secure version of FioranoMQ server includes integrated SSL support for encrypted data transfers (40-bit (export version) and 128-bit (U.S. version) encryption of all data transfers. Authentication is provided through digital certificates using server and client-side callbacks. FioranoMQ SSL version is 100% Java and is available on both Windows and Unix platforms. [For more information, refer to Chapter 7 FioranoMQ Security in the FioranoMQ Handbook.
Question 8: How does FioranoMQ provide SSL support?
FioranoMQ provides support for SSL using Phaos SSLava Toolkit ([ http:// |http://www.phaos.com]www.phaos.com) and through SSL implementation from Sun (JSSE) http:// java.sun.com/products/jsse/.
For more information refer to Chapter 7 FioranoMQ Security in the FioranoMQ Handbook.
Question 9: Does FioranoMQ SSL version support all the features that are offered by FioranoMQ?
Yes, FioranoMQ SSL version provides all the features that the regular FioranoMQ offers.
Question 10: Are there any limitations using the SSL version of FioranoMQ?
The SSL version of the software is not available for download on our website, due to US import laws. In order to evaluate the SSL version of the software, please send a mail to firstname.lastname@example.org.
The SSL version of FioranoMQ does not work on Windows 98.
FioranoMQ Server Resources
Question 11: What is the memory footprint of the MQ Server and Client?
FioranoMQ Server has a 52 MB memory footprint on startup. The minimum Client runtime libraries (which would include fmq-rtl.jar and fmq-common.jar) are nearly 17.4 MB.
Question 12: How much secondary disk space is needed to run the MQ Server?
FioranoMQ installation occupies 210 MB hard disk space for Linux and UNIX, 250 MB hard-disk space for Windows. As persistent messages are logged on to secondary storage, the amount of free hard disk memory for MQ Server would depend largely on the JMS Applications that access the persistent storage engine. If the volume of persistent storage is high,a larger amount of secondary hard-disk space is required.
FioranoMQ Resource Constraints
Question 13: How many concurrent client connections/Sessions/Consumer/Topics can the FioranoMQ Server support?
There are no specified limits on the number of connections that can be created with the FioranoMQ Server.The number of connections is limited only by the hardware, the JVM used and the client Application. The FioranoMQ Server implements internal memory management algorithms to keep track of the approximate amount of memory being consumed by the system. As the memory limit of the JVM is reached, the FioranoMQ Server automatically starts blocking and (where allowed by JMS semantics) overflowing its internal buffers. The memory manager thus automatically governs the speed of running applications. Hence, the number of concurrent connections depends on the Client Applications. It is strongly recommend to simulate JMS clients and verify the concurrent connection limit of the FioranoMQ Server on your depl[oyment environment. For more information, read [the FioranoMQ Scalability, Reliability and Performance section.
FioranoMQ solves Java's Connection Management limitations using Fiorano Scalable Connection Manager
FioranoMQ does not have specified limits on the resources that can be allocated on the MQServer by the Client Applications. As explained earlier,FioranoMQ implements a highly sophisticated algorithm to protect the MQServer from running out of memory. The precise number of destinations/sessions/consumers that can be created on the MQServer depends on the JVM, hardware used and the client applications.
Question 14: What is the maximum message size that can be sent using FioranoMQ?
FioranoMQ does not have a specified limit on the resources that can be allocated on the MQServer by the Client Applications. For optimal performance, it is recommended to limit the message size to 100K. For messages of sizes greater than 100K, the developer can employ a straightforward algorithm to split messages as chunks while sending and regroup them on receipt. Again, the optimal message size largely depends on the JVM and platform being used.
Question 15: Does the Client transaction have a transaction boundary?
FioranoMQ provides transaction support at the Client end and is limited by the JVMs memory allocation. To prevent "OutOfMemory" situations in the client, FioranoMQ limits "maximum transaction boundary" to 2048 KB or 2 MB.
Question 16: Does FioranoMQ support distributed transactions?
FioranoMQ has added support for distributed transactions after the 6.0 release and a beta version of the FioranoMQ server with this support is available on request.
Contact email@example.com for an evaluation version of the above mentioned beta version.
Publishing Messages to FioranoMQ
Question 17: When does a call to publish on a Queue or a Topic return?
The publish call made by the Publisher in the context of a non-transacted session does not return till the message is delivered to the MQServer. If the published message is persistent, FioranoMQ assures that the call to publish does not return till the messages have been logged on to the persistent store.
Question 18: What is the functionality of publish call in a transacted Session?
In the case of a transacted session, the publish call logs the message on client-side to be sent to the MQServer only on commit call. The call to commit() does not return until the messages have been logged on to the persistent store.
Question 19: What is the difference between publishing persistent/non-persistent messages to a Queue?
Persistent messages sent to a queue are stored in the FioranoMQ persistent store on the server side. These messages can be retrieved from this store by connecting to the FioranoMQ server, even after it has been re-started.
Non-persistent messages are held in-memory on the FioranoMQ server side and are delivered once and only once to the receivers. In case of the FioranoMQ server going down, these messages are no-longer available as they are not logged anywhere.
[For more information on Non-persistent messages on queues, refer to FioranoMQ Non-Persistent Messages.
FioranoMQ Persistent Store
Question 20: What database does FioranoMQ use for storing Messages?
FioranoMQ uses an optimized file based data store to store messages. By using an optimized file based store, FioranoMQ performs at least 10 times faster than other competing JMS vendors when persistent messages are retrieved. FioranoMQ also ensures efficient storage (a single copy of the message is stored in the persistent store, even when there are more than 1 receivers of the message), management, retrieval and deletion of messages from this persistent store.
In addition, FioranoMQ has introduced support for RDBMS to be used as the data-store for storing persistent messages and durable subscriptions. A beta version of this support is available for evaluation on request. Contact firstname.lastname@example.org for the same.
This version currently supports Oracle, DB2, MSSQL, MySQL, and Cloudscape databases.
Question 21: How does FioranoMQ handle client disconnections?
In FioranoMQ Server, client connections closed either using the close() API or abruptly using CTRL+C. If the Socket connection between the Client and the MQ Server times out,the MQServer cannot detect these half-open connections until the underlying TCP layer times out the client socket connection. To ensure that FioranoMQ does not have "half-open" connections, please ensure to turn on the PING options.
Question 22: Is there a reconnection (with the server) handling mechanism?
The installed Exception Listener gets invoked when the connection to the messaging server is lost. Within your onException() you can write your own code to reestablish connection with MQServer.
FioranoMQ also provides for a revalidate() call that revalidates connections. Revalidate re-establishes connection with MQServer and restores the validity of created sessions, senders and receivers on this connection. FioranoMQ provides revalidation for both topic and queue connections.
After the 6.0 release, FioranoMQ has introduced DurableConnections where reconnection to the FioranoMQ server has become transparent to the clients. Now clients can automatically reconnect to the primary FioranoMQ server or backup FioranoMQ server (if primary is un-available) without any extra logic in the client application.