The Messaging Engine Layer

The BizTalk Server Messaging engine enables users to create business processes that spans multiple applications by providing two primary things:

  • A way to specify and implement the logic driving that business process
  • A mechanism for communicating across the applications that the business process uses

The figure below illustrates the main components of the engine that address these two problems.

Figure 1 : Messaging architecture

As the diagram shows, a message is received through a receive adapter. Different adapters provide different communication mechanisms, so a message might be acquired by accessing a Web service, reading from a file, or in some other way. The message is then processed through a receive pipeline. This pipeline can contain various components that do things such as converting the message from its native format into an XML document, validating a message’s digital signature, and more. The message is then delivered into a database called the MessageBox, which is implemented using Microsoft SQL Server.

The logic that drives a business process is implemented as one or more orchestrations, each of which consists of executable code. These orchestrations are not created by writing code in a language such as C#, however. Instead, a business analyst or (more likely) a developer uses an appropriate tool to graphically organize a defined group of shapes to express conditions, loops, and other behavior. Orchestrations can optionally use the Business Rule Engine, which provides a simpler and more easily modified way to express complex sets of rules in a business process.

Each orchestration creates subscriptions to indicate the kinds of messages it wants to receive. When an appropriate message arrives in the MessageBox, that message is dispatched to its target orchestration, which takes whatever action the business process requires. The result of this processing is typically another message, produced by the orchestration and saved in the MessageBox. This message, in turn, is processed by a send pipeline, which may convert it from the internal XML format used by BizTalk Server to the format required by its destination, add a digital signature, and more. The message is then sent out using a send adapter, which uses an appropriate mechanism to communicate with the application for which this message is destined.

This layer monitors the messaging engine of the BizTalk server, measures the load on the engine, reports how quickly every send and receive adapter processes the message load, and sheds light on current / potential processing bottlenecks (if any) in the engine. All the tests mapped to this layer report metrics for each host instance on the BizTalk server. A host is a logical representation of a Microsoft Windows process that executes BizTalk Server artifacts such as send ports and orchestrations. A host instance is the physical representation of a host on a specific server.

Figure 2 : The tests mapped to the Messaging Engine layer