Housecat is a one-to-one messaging pattern in which a sender addresses a receiver by name. The diagram shows this pattern, where Master refers to the sender, and Cat refers to the receiver. The Router refers to a set of feeds and pipes, or other resources capable of queuing and routing messages.

In the general decoupled messaging model, the cat reads from a private queue which subscribes to the named address, and the master publishes messages to this named address. In a coupled model, the cat reads from a named queue and the master publishes into this queue directly.

The RestMS 3/Defaults profile implements both coupled Housecat (using the default feed and default join) and decoupled Housecat (using a dynamic feed and arbitrary joins).

Housecat, or rather its variation Reverse Housecat is most …

Read More

Parrot is a one-to-many messaging pattern for information distribution in which a publisher addresses a group of subscribers. The diagram shows this pattern, where Parrot refers to the publisher, and Monkey refers to the subscribers. The Router refers to a set of feeds and pipes, or other resources capable of queuing and routing messages.

Parrot is always decoupled. The monkeys read from a set of topics, and the parrot publishes messages to this topic set. To support Parrot the router must implement topic routing into private queues, private selection from shared topic ring buffers, or another equivalent mechanism.

The RestMS 3/Defaults profile implements Parrot via ad-hoc joins, where the feed is the topic name. The RestMS 4/AMQP9 profile implements Parrot through the fanout, direct, topic and headers feeds. In Parrot …

Read More

Wolfpack is a one-to-one-of-many messaging pattern for workload distribution in which a client addresses a group of services that share a workload stream. The diagram shows this pattern, where Feeder refers to the client, and Wolf refers to the service instances. The Router refers to a set of feeds and pipes, or other resources capable of queuing and routing messages.

Wolfpack is always decoupled. The wolves read from a named shared queue, and the feeder publishes messages to this named queue. To support Wolfpack the router must implement shared queues which can distribute messages to wolves on a round-robin basis, possibly with the addition of fair-queueing in which feeders as well as wolves are selected on a round-robin basis.

The RestMS 4/AMQP9 profile implements Wolfpack through the service and rotator feed types. …

Read More