Once the message has passed from the adapter and through the pipeline, the BizTalk Message Agent, which runs as part of a BizTalk host instance, is responsible for evaluating who has subscribed to this message and committing it into the BizTalk MessageBox. Figure 2-4 shows all the engine concepts we've shown so far, in context. We cover BizTalk hosts later in this chapter.
The BizTalk MessageBox is implemented as a SQL Server database and is shared between all BizTalk servers in a BizTalk group. Multiple MessageBoxes can be utilized in very specific high-load or latency-critical scenarios. However, due to the requirements of using a distributed transaction across multiple MessageBoxes, and the necessity to disable message publication on the master MessageBox, you typically need to scale from one to three MessageBoxes to achieve scalability. (This should be tested in a performance and scalability lab.)
The MessageBox is the heart of any BizTalk solution in that without it nothing would work. All inbound and outbound messages, along with orchestration execution, dehydration, rehydration, and message tracking, rely on the BizTalk MessageBox.
As you'll see when we discuss the MessageBox further, it's a publish/subscribe design. Messages are published to the BizTalk MessageBox; if there is more than one subscriber to a given message, both subscribers ...