Recently IBM® App Connect Enterprise released new “Group” nodes that perform aggregation-style operations similar to the existing aggregation nodes but without the requirement for a local queue manager. This enables integrations running in App Connect on IBM Cloud™ to use the new Group nodes for aggregation-style operations.
IBM App Connect Enterprise software has always had the ability to perform aggregation style operations using the aggregation nodes, relying on your Integration Server having a local MQ queue manager. Integrations running in the cloud do not have a local queue manager, so were not able to perform these style of integrations. Now, integrations running in App Connect on IBM cloud can use the new Group nodes for aggregation-style operations,with the co-ordination data held in memory instead of on queues.
Figure 1. New App Connect Enterprise Group Nodes
No special configuration is required to deploy Group nodes to App Connect on IBM Cloud. You can import a BAR file that is used on premises although you may need to adjust endpoint URLs accordingly.
If you would like to try out the Group nodes then please import GroupNodesDemo project interchange (attached below) into your Enterprise Toolkit. This sample flow takes an integer and then sends it off to several backends, each one performing a different mathematical operation on it. When all the responses are gathered back, they are returned to the caller. To run this demo perform the following steps:
- Import GroupNodesDemo.bar into App Connect on IBM Cloud
- Start the Integration; for example, from the integration’s tile on the App Connect dashboard select the options menu (⋮) and then click Start.
- Click the integration’s tile on the dashboard to open the integration details view, and then copy the HTTP Input (request URL) that your integration is exposing for the “Maths” endpoint
- Test your integration; for example, run a command such as the following:
curl -u iib:<password> -X POST -d '<Root><Number>42</Number></Root>' https://isr15evi.ace.ibm.com/maths
- You should get a response such as shown below:
<?xml version="1.0"?>
<Group>
<GroupProperties>
<GroupId>010000000000000001000000000000000000000000000000</GroupId>
<GroupName>TEST_GROUP_NAME</GroupName>
<GroupCreationTime>1538681845807</GroupCreationTime>
<GroupCommitTime>1538681845809</GroupCommitTime>
<GroupCompleteTime>1538681845820</GroupCompleteTime>
<GroupOutputTime>1538681845820</GroupOutputTime>
<GroupStatus>Completed</GroupStatus>
</GroupProperties>
<Context>
<HTTP>
<RequestIdentifier>4854545000000000010000002fb895404802000000000000</RequestIdentifier>
</HTTP>
</Context>
<Replies>
<DOUBLE.IT>
<ReplyId>43414c4c000000000100000031b895404802000000000000</ReplyId>
<RequestSendTime>1538681845809</RequestSendTime>
<ReplyReceiptTime>1538681845820</ReplyReceiptTime>
<Reply>
<Root>
<Properties>
<MessageSet></MessageSet>
<MessageType></MessageType>
<MessageFormat></MessageFormat>
<Encoding>546</Encoding>
<CodedCharSetId>1208</CodedCharSetId>
<Transactional></Transactional>
<Persistence></Persistence>
<CreationTime></CreationTime>
<ExpirationTime>-1</ExpirationTime>
<Priority></Priority>
<ReplyIdentifier></ReplyIdentifier>
<ReplyProtocol>FILE</ReplyProtocol>
<Topic></Topic>
<ContentType></ContentType>
<IdentitySourceType></IdentitySourceType>
<IdentitySourceToken></IdentitySourceToken>
<IdentitySourcePassword></IdentitySourcePassword>
<IdentitySourceIssuedBy></IdentitySourceIssuedBy>
<IdentityMappedType></IdentityMappedType>
<IdentityMappedToken></IdentityMappedToken>
<IdentityMappedPassword></IdentityMappedPassword>
<IdentityMappedIssuedBy></IdentityMappedIssuedBy>
</Properties>
<XMLNSC>
<Result>
<Number>84</Number>
</Result>
</XMLNSC>
</Root>
</Reply>
</DOUBLE.IT>
<LOG.IT>
<ReplyId>43414c4c010000000100000031b895404802000000000000</ReplyId>
<RequestSendTime>1538681845809</RequestSendTime>
<ReplyReceiptTime>1538681845820</ReplyReceiptTime>
<Reply>
<Root>
<Properties>
<MessageSet></MessageSet>
<MessageType></MessageType>
<MessageFormat></MessageFormat>
<Encoding>546</Encoding>
<CodedCharSetId>1208</CodedCharSetId>
<Transactional></Transactional>
<Persistence></Persistence>
<CreationTime></CreationTime>
<ExpirationTime>-1</ExpirationTime>
<Priority></Priority>
<ReplyIdentifier></ReplyIdentifier>
<ReplyProtocol>FILE</ReplyProtocol>
<Topic></Topic>
<ContentType></ContentType>
<IdentitySourceType></IdentitySourceType>
<IdentitySourceToken></IdentitySourceToken>
<IdentitySourcePassword></IdentitySourcePassword>
<IdentitySourceIssuedBy></IdentitySourceIssuedBy>
<IdentityMappedType></IdentityMappedType>
<IdentityMappedToken></IdentityMappedToken>
<IdentityMappedPassword></IdentityMappedPassword>
<IdentityMappedIssuedBy></IdentityMappedIssuedBy>
</Properties>
<XMLNSC>
<Result>
<Number>3.73766961828337E+0</Number>
</Result>
</XMLNSC>
</Root>
</Reply>
</LOG.IT>
<SQUARE.IT>
<ReplyId>43414c4c020000000100000031b895404802000000000000</ReplyId>
<RequestSendTime>1538681845809</RequestSendTime>
<ReplyReceiptTime>1538681845820</ReplyReceiptTime>
<Reply>
<Root>
<Properties>
<MessageSet></MessageSet>
<MessageType></MessageType>
<MessageFormat></MessageFormat>
<Encoding>546</Encoding>
<CodedCharSetId>1208</CodedCharSetId>
<Transactional></Transactional>
<Persistence></Persistence>
<CreationTime></CreationTime>
<ExpirationTime>-1</ExpirationTime>
<Priority></Priority>
<ReplyIdentifier></ReplyIdentifier>
<ReplyProtocol>FILE</ReplyProtocol>
<Topic></Topic>
<ContentType></ContentType>
<IdentitySourceType></IdentitySourceType>
<IdentitySourceToken></IdentitySourceToken>
<IdentitySourcePassword></IdentitySourcePassword>
<IdentitySourceIssuedBy></IdentitySourceIssuedBy>
<IdentityMappedType></IdentityMappedType>
<IdentityMappedToken></IdentityMappedToken>
<IdentityMappedPassword></IdentityMappedPassword>
<IdentityMappedIssuedBy></IdentityMappedIssuedBy>
</Properties>
<XMLNSC>
<Result>
<Number>1764</Number>
</Result>
</XMLNSC>
</Root>
</Reply>
</SQUARE.IT>
</Replies>
</Group>
Note: The demonstration message flow includes Trace nodes to help you to inspect the message tree. These trace nodes output “error” messages like the following message:
2018-12-23 14:41:23.682952: Error message ‘============================== S T A R T O F T R A C E – ScatterOutTerminal =============================
You can safely remove the trace nodes if you do not want to see the associated messages.