Do you need to connect enterprise systems to devices and sensors simply, efficiently, securely and reliably? You need IBM® MessageSight™ V1.2, the latest release of our high-performance mobile and machine-to-machine messaging appliance. It makes it simple to connect your enterprise to the Internet of Things, and enables fast, responsive, bi-directional communication with mobile applications. This release adds virtual appliances for production use to give many new deployment options for MessageSight.
Rapidly deploy MessageSight to public and private clouds
MessageSight Virtual Edition offers a new breadth of deployment options and flexibility. The cost varies depending on how you use it and how large a virtual appliance you deploy. First, choose whether you want to use it for development (free for a single user), non-production or production work. Next, choose how large a virtual machine to deploy into. A small, non-production virtual appliance is much cheaper than a large, production virtual appliance.
In a public cloud, the cost of virtual machines increases the larger and more powerful they are. Because MessageSight automatically scales according to the resources you provide, you can work out how large a virtual machine to use based on your expected workload. For example, if you know you need to support 100,000 concurrent connections, you can select sufficient memory to support it. The cost of the virtual machine in the public cloud and the cost of MessageSight both depend on the size of the virtual machine. So, MessageSight fits very well in the modern, cloud environment.
For the very best performance, choose the MessageSight physical appliance. The combination of custom hardware and firmware tuned specifically to exploit it gives a clear benefit. For more flexibility or less demanding workloads, choose the MessageSight Virtual Edition. You can of course choose a mixture of both. For example, you could have a free development virtual appliance for each of the application developers, a small non-production virtual appliance for testing, and a much larger virtual or physical appliance for production.
There are two different media packs, one for VMware hypervisors and one for the IBM SoftLayer cloud-managed infrastructure. Over time, we may add support for further cloud providers based on demand.
Manage your messages more easily
We've added new features to make it easier to manage the messages on the appliance and reduce the administrative burden for a running system.
We now have message expiration for MQTT. When you use a messaging policy to grant authority to publish messages, you can set the maximum time-to-live for messages published. So, if you know that messages for a particular application are only useful for an hour, for example, you can set the maximum time-to-live to 3,600 seconds and MessageSight will discard messages which are not consumed within this time. Since message expiration is not part of MQTT itself, this is an administrative extension to make MessageSight's MQTT support even better.
In a publish/subscribe system, messages for a subscription might be published faster than a subscriber can consume them. If it's just a temporary part of the natural variability of the system, that's fine and buffering some messages temporarily is useful. But, the number of unconsumed messages for a subscription needs to have a limit, and a decision made as to what happens when the limit is reached. We now have two different behaviours for a full subscription: discard-old-messages and reject-new-messages. If you use discard-old-messages, when a message is being published which matches a full subscription, MessageSight discards some of the old messages to make more room. It discards messages a few at a time for efficiency, but the idea is that a full subscription keeps the most recent messages. Now, this is optional since messages are being discarded, but it might well be preferable to keep messages flowing than to reject new ones.
Finally, we have added shared subscription support for MQTT. This is for situations where a single consumer cannot keep up with the flow of messages. You use a shared subscription by using a special format for the topic filter when you subscribe like this: $SYS/SharedSubscription/MySub/Topic1/Topic2/Topic3. This uses a shared subscription called "MySub" to the topic "Topic1/Topic2/Topic3". Messages published to "Topic1/Topic2/Topic3" will match this subscription. If the shared subscription already exists, the new subscription actually adds a new consumer to the shared subscription which shares the messages with the other consumers. Messages are delivered to the different consumers based on how fast they consume messages. You can do this with a regular MQTT client, just by using the special topic string format. The effect is workload balancing for MQTT clients.
Of course, we have full support for the forthcoming MQTT 3.1.1 protocol which we expect to become an OASIS standard in a few weeks.
Security and administration enhancements
MessageSight now supports the popular OAuth 2.0 standard which enables secure delegated access to messaging resources without the credentials being supplied to MessageSight. For example, you could use DataPower as the authorization server.
There are three features intended for safeguarding server stability. These are specifically for situations where you might not have control over the behaviour of the clients, such as MQTT being used on a public-facing server. They're all configured using connection policies essentially as advanced authorisation properties. Taken together, they make it simple to restrict the actions of MQTT clients.
First, you can ensure that publishers only publish QoS 0 messages. These have the lowest overhead and the server is allowed to discard them. You can already limit the size of messages published, and now you can control the QoS administratively.
Second, you can require that MQTT clients connect using the clean-session=true setting. This ensures that the server does not have to remember the clients when they have disconnected.
Third, you can ensure that clients connect "anonymously" without specifying a client ID. This is a new feature of MQTT 3.1.1. The effect is that you can be sure that there's no risk of two clients accidentally or intentionally using the same client ID and interfering with each other.
We've done a lot of work on resource monitoring. There's new SNMP support so you can easily incorporate MessageSight into your enterprise monitoring solution. There are new statistics and charts in the dashboard so that it's easier to see system activity and resource use at a glance. For example, there's a categorized break-down of the memory use on the appliance so you can see the volume of messages buffers, the amount of memory taken up by subscriptions and so on.
You can set up a remote logging server to receive MessageSight log messages, or have log files automatically copied onto a file server for archiving.
Protocol plug-ins - technical preview
Imagine that you work for a car company which has already deployed a small number of high-end connected cars. You want to roll out connectivity more widely, but you realise that the protocol you started using will not scale to millions of vehicles. You decide to use MQTT and MessageSight for the newer cars, but what do you do about the existing ones? Do you run two parallel systems, or perhaps change the firmware in all of the existing high-end vehicles?
MessageSight V1.2 includes a plug-in point to support additional protocols. You can write a plug-in which speaks the old protocol, install it into MessageSight and handle both new and old protocols in the same infrastructure. The plug-in does not have direct access to the network; instead, it uses the MessageSight communications code to send and receive packets. The plug-in uses a publish/subscribe messaging interface to talk to the MessageSight engine so that it can interoperate with the rest of the system.
This feature is a technical preview to start with. We'd love feedback on protocol plug-ins, whether it's about the programming interface, debugging your plug-ins or whatever.
Both editions of MessageSight V1.2 will be available on 21 November 2014. Why not download the virtual appliance from IBM developerWorks and try it out for free on your laptop?