What’s New
The following sections list new features and resolved issues pertaining to FioranoMQ 10.2.0 release version.
MQTT Protocol
MQTT is a light weight event and message oriented protocol allowing devices to asynchronously communicate efficiently across constrained networks to remote systems, standardized by OASIS. FioranoMQ 10.2.0 supports the MQTT Protocol (the 3.1.1 standard version) which can be run simultaneously with the JMS Server. MQTT uses the Publish/Subscribe message pattern which provides one-to-many message distribution and decoupling of applications.
The MQTT protocol embedded in the FioranoMQ Server uses the same Topic destinations as FioranoMQ and automatically maps MQTT clients and JMS clients. Therefore, a Topic destination can concurrently host MQTT/JMS Publishers and Subscribers. An MQTT packet is converted to a JMS BytesMessage to be consumed by a JMS Subscriber, and a JMS message is converted to an MQTT packet to be consumed by an MQTT Subscriber as required.
The newly added MQTT Protocol supports only clients of version 3.1.1 and ia is not backward compatible with 3.1 standards based MQTT clients.
Handling FioranoMQ Database Corruption
In this latest release, Database corruptions (when detected) are narrowed down to a specific destination and backed up for further analysis and recovery. A new destination with the same name now replaces the corrupted destination at runtime and clients are automatically connected to the fresh destination.
The FioranoMQ Web console has been enhanced to monitor the corrupted destinations under the Queues/Topics tab and the provision to execute recovery and replay commands on the corrupted destinations.
Server Thread dumps
In order to provide more information on the worker threads in the Server, Thread stack traces are dumped to the log files for client requests taking more than the configured interval of time. This feature helps in identifying bottlenecks and execution delays in the server.
Message Browser
Pubsub Message Browser support has been added to Native C++ RTL as well as the older C++ RTL.
Client Information
Additional information on client connections has been added to determine the FioranoMQ version, build number, and the Protocol used by each client connection. These can be viewed from the web console's connections tab.
JMX APIs
New JMX APIs are added to Queue and PubSub services to get the number of deliverable messages and undeleted messages count for Persistent and Non-Persistent messages separately.
Resolved Issues
- Fiorano Bridge not accepting valid JMS messages with JMSType set to a string which does not belong to a fixed set of Strings.
- ConnectionFactory metadata and Initial Context environment variables should be merged in LPC.
- [C/C++] CSP transfer is not working properly when we using transacted publisher and transacted durable subscriber.
- [Native C++] Subscriber is revalidating unnecessarily when its topic is shutdown or deleted.
- [C/C++] Crash occurs while freeing unified Connection when the 'UseSingleSocket' flag is set to true.
- [C# RTL] Unneccessary creation and deletion of NPBatchThread for Csp Sender.
- [C/C++] Queue Receiver unable to receive compressed map messages.
- [Native C++] Segmentation fault in Queue Browser.
- [C/C++] Exception thrown while fetching next element in QueueBrowser after revalidation.
- [C/C++] In transacted session, segmentation fault occurs while sending messagaes after revalidation.
- [Native C++] connection level property 'DisableSendingCSPStoredMessages' is not working.
- [C/C++] SendPendingCSPQueue thread is started unnecessarily even if the cspCache do not contain any message.
- [C# RTL] In transacted session, rollledback messages are not delivered to Durable-Subscribers.
- [C/C++] In SSL libraries, Exceptions sent from server without errorcodes are not handled properly.
- [C/C++] Segmentation fault occurs when number of open files is set to too low a count.
- [C#/Native C++] LIMIT_REACHED exception is not thrown while creating a connection with limit set to '0'.
- [HA] Error 'QUEUE_RECEIVER_DOES_NOT_EXIST' in MQ logs during passive peer failover.
- In Replicated HA, Clients not able to send/receive messages because of QUEUE_CLOSED error.
- [SI 6046] INVALID_CONSUMER_HANDLE error during receiver close.
- 'Remote server is not responding properly' errors in MQ error log and messages are not going through the destinations.
- CSP CeMaster.tbl file handle leak when Connection is created and closed frequently.
- Exception occurred while receiving message from targetTopic, if sourceTopic is Encrypted in Repeater.
- Consumer not able to receive messages after successful connection revalidation.
- Editing a newly created Second connection manager would miss the Connection Manager itself completely.
- Reconnect thread is not started in the case where permissions are disabled to create the CSP folder.
- EditLinkConfiguration in Repeater displays the default values instead of the respective link's configurations.
- JNDI Lookup inconsistency with SSL enabled server accepting both TCP and SSL connections using different connection managers.
- In Repeater, an Exception occurs while receiving messages that are encrypted at the message level.
- ClientID already exists exception is thrown when unified connection factory is used with lazy thread flag set to false.
- In transacted session, rolledback messages are not delivered to Durable-Subscriber.
- APIs should be provided to change the properties of destinations present in passive server from active server.
- [SI 6076] TopicSubscriberMbean leak
- [Native C++] Segmentation fault while calling the reset() function in stream message.
- [Native C++] Segmentation fault occurs while freeing unified connection.
- Connections are not getting closed gracefully while handling multiple connections with shutdownHook Enabled.
- [Native C++] Consumer not able to receive messages after successful connection revalidation.
- [C#] Expired Messages are received by synchronous and asynchronous slow consumers.
- CLOSE_WAIT Socket leakage during repeated connection loss with the server.
- [C/C++] QueueReceiver is not receiving messages while using the http protocol.
- More than one message gets redelivered in queue receiver - transacted/client-ack mode.
- More than one message gets redelivered in queue receiver - autoack (bridge).
- [C/C++] Pubsub application aborted when restarting the server on a MAC machine.
- [C/C++/C#] More than one message gets redelivered in queue receiver -transacted/client-ack mode.
- CSP data is corrupted in the following scenario:
- Trying to set duplicate client id with 'EnsureUniquenessOfClientId' enabled and resetting the failed client with a different client id.
- Queue/Topic Shut down reason must be visible in the web console.
- Clients are created with the same clientId inspitein spite of 'EnsureUniquenessofClientID' being enabled.
- Sender stops flushing messages from CSP after change in transacted buffer size during server restart and revalidation then goes in a loop.