Figure 6-60 Command and Query pattern In this section, we explore how you can use IBM MQ and IBM App Connect to implement the  Command side of this pattern. 6.4.1 Enable create, update, delete via commands Chapter 6. Practical agile integration  209 One of the first choices you must make when implementing this side of the pattern is which  protocol mechanism to use for sending the commands to the corresponding component.  Because Commands represent a specific action that must occur, we use a one-way “PUT” to  an IBM MQ queue. This approach allows us to decouple the requester from the  implementation. At the same time, it provides a reliable messaging platform that allows event  collaboration among the different services. IBM MQ’s assured "exactly once" delivery of  messages is ideal here. And its ability to participate in a transaction with a database offers  even more options as we discuss later.  For a clean design, you need three queues that represent each one of the commands. In  addition, it is recommended to have two extra queues, one to store potential errors and a  second one to log the activity. The second queue can be replaced by any other logging  framework that is available in the platform, but we use it here for illustration purposes. In the next section we show you how to create an IBM MQ queue manager, and the  necessary queues for this part of the solution. However, you might already have an existing  IBM MQ queue manager (or already have the skills to create one). Example 6-2 on page 210  shows the list of IBM MQ commands that you need to create the corresponding queues and  the needed authorization records: (MQ) Create Update Delete (AC-IS) Search & Read (AC-IS) (APIC) Query  via API Command  via  Messaging PRODUCTS datastore (DB2) IBM App Connect (Integration Server runtime) (AC-IS) (DB2) IBM DB2 database (APIC) IBM API Connect (MQ) IBM MQ  (Queue Manager component)