Sunday, 20 January 2013

A Very Brief Summary of Websphere MQ

I'll begin with a basic overview of MQ.  Most of the below is from the IBM WMQ docs .

Queue Managers

A queue manager's job, funnily enough is to manager queues.  Every queue in MQ belongs to one queue manager to whom it is local and who 'manages it'.  This includes the following:

  • ensuring that message are stored safely
  • messages are recoverable
  • messages are delivered once and only once (this is known as the 'assured delivery property' of Websphere MQ. 
Note that the application program and Queue Manager do not have to run on the same machine. 

Types of Queue

Local Queue:

A queue is local is it is owned by the Queue Manager to which the application program is connected.  

Remote Queue:

A queue managed by a different Queue Manager.  It is not a real queue, merely a definition of a queue. Note that you cannot read from a remote queue (only local queues), though you can, of course, write to a remote queue.  This is done bye using a... 

Transmission Queue

This is a special type of local queue which is used to send messages to a remote queue. Note that to send messages to a remote queue a channel is required to connect your Queue Manager and the Queue Manager of the remote queue you are trying to send messages to.  Channels are described later. 

Dead Letter Queue

These are where messages are put if they cannot be sent. Every Queue Manager should have one dead letter queue.  

Message sending may fail for a number of reasons: 
  • destination queue is full
  • destination queue doesn't exist
  • sender is not authorised to put to destination queue
  • message is too large
  • message contains duplicated sequence number
Channel

This is a logical communication link.

The only type of channel I have used is a Message Channel which connects two Queue Managers to allow messages to be sent between queues on these two Queue Managers. 

Note that channels are unidirectional; to define a channel you must specify which Queue Manager is the sender and which is the receiver.  If you want bidirectional communication then you need two channels between the two Queue Managers. 

The other type of channel is apparently a MQI Channel.  



Scala with Cats: Answers to revision questions

I'm studying the 'Scala with Cats' book. I want the information to stick so I am applying a technique from 'Ultralearning...